正则表达式匹配未被括号括起的下划线?

Mos*_*kie 3 regex

任何人都可以建议正则表达式匹配以下示例中的下划线:

test_test
test[_test
test_]
Run Code Online (Sandbox Code Playgroud)

但不符合这个:

test[_]test
Run Code Online (Sandbox Code Playgroud)

这是使用.Net正则表达式库.我正在使用这个RegEx测试仪来检查:

http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

Gum*_*mbo 5

试试这个:

_[^\]]|[^[]_
Run Code Online (Sandbox Code Playgroud)

它由_[^\]](下划线和非下划线])和[^[]_(不是[和下划线)的交替组成.

或者,如果您想使用环视断言来真正匹配下划线而不是周围的字符:

_(?=[^\]])|_(?<=[^[]_)
Run Code Online (Sandbox Code Playgroud)

这种匹配是后面没有任何下划线]((?=[^\]]),积极先行),或不是由之前的任何下划线[((?<=[^[]_)负向后看).这可以结合到:

_(?:(?=[^\]])|(?<=[^[]_))
Run Code Online (Sandbox Code Playgroud)