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

Regular Expression to find each word of a string excluding those between delimiters

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

第一个例子:[嗨!]我叫约翰。 它应该 return 4 个匹配项:"My" "name" "is" "John."

第二个例子:我的名字是约翰[我想]。 它应该 return 5 个匹配项:"My" "name" "is" "John" "."

是否可以用正则表达式做这样的事情? 非常感谢。

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

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

尝试this.Grab capture.See demo.Here 我们先匹配[] 然后捕获其余的并组成一组。

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

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

请参阅 demo.This 确保匹配的字符前面不应该有 ] 而没有 [。所以这实际上捕获了不在 [=12= 内的字符].

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