正则表达式查找字符串中的每个单词,不包括分隔符之间的单词

时间:2015-01-16 16:54:11

标签: c# regex

有很多关于在两个分隔符之间查找单词的文章,但就我而言,我想在分隔符之间排除单词并保留其他分隔符。简单的例子应该是有用的:

第一个例子:[嗨!]我的名字是约翰。 它应该返回4场比赛:"我的" "名称" "是" "约翰"

第二个例子:我的名字是约翰[我想]。 它应该返回5场比赛:"我的" "名称" "是" "约翰" ""

是否可以使用正则表达式执行此类操作? 非常感谢。

[edit]我正在使用C#应用程序,它允许我作为用户提供我自己的正则表达式来自定义单词的计数方式,但我无法更改代码本身。

1 个答案:

答案 0 :(得分:1)

\[[^\]]*\]|(\S+)

试试这个。抓住捕获。看看demo。这里我们首先匹配[],然后捕获其余的并组成一组。

https://regex101.com/r/tX2bH4/33

([^\[\]\s]+)(?![^\[]*\])

请参阅演示。这样可以确保匹配的字符在]之前不应该有[。所以这实际上捕获的不是[]内的字符。

https://regex101.com/r/tX2bH4/34