正则表达式 - 匹配行尾的所有char但模式

时间:2011-12-23 17:54:42

标签: regex

我正在尝试组合正则表达式,但我似乎错过了目标。我之前使用过简单的正则表达式,但这些否定总是让我感到高兴。

我需要匹配整个字符串,除了字符串的任何部分以及两个方括号之间的字符[]

示例:

Hello, World! [strip this]

它应匹配:

Hello, World!

应打开包括方括号的打开/关闭方括号之间的任何内容。但是,我只想匹配最后一组。

以下示例,

Hello, [cold] World! [strip this]

应该离开,

Hello, [cold] World!

2 个答案:

答案 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