我正在尝试组合正则表达式,但我似乎错过了目标。我之前使用过简单的正则表达式,但这些否定总是让我感到高兴。
我需要匹配整个字符串,除了字符串的任何部分以及两个方括号之间的字符[]
示例:
Hello, World! [strip this]
它应匹配:
Hello, World!
应打开包括方括号的打开/关闭方括号之间的任何内容。但是,我只想匹配最后一组。
以下示例,
Hello, [cold] World! [strip this]
应该离开,
Hello, [cold] World!
答案 0 :(得分:1)
这里你不需要否定。只需将你的正则表达式固定在最后:用{0}替换\s*\[[^\]]+\]\s*$
:
fge@erwin ~ $ perl -ne 's,\s*\[[^\]]+\]\s*$,,; print "Result: -->$_<--\n"'
Hello, World! [strip this]
Result: -->Hello, World!<--
Hello, [cold] World! [strip this]
Result: -->Hello, [cold] World!<--
fge@erwin ~ $
答案 1 :(得分:0)
(.*)(\s*\[.*\])
您想要的部分将位于捕获组1中。请参阅此处的操作:http://rubular.com/r/P9xczF2AVI