正则表达式,在句子中匹配括号内的单词

时间:2012-12-07 18:38:28

标签: regex

我需要一个正则表达式来在句子中匹配括号内的单词。例如:

"this is [stack]overflow. I [[love]this[website]]."

我想从上面的句子中匹配的是堆栈,爱情和网站。

我已经尝试了下面的正则表达式\[(.*[^\]\[])\],但它不起作用。

2 个答案:

答案 0 :(得分:4)

以下内容应该有效:

\[([^\[\]]*)\]

示例:http://www.rubular.com/r/uJ0sOtdcgF

说明:

\[           # match a literal '['
(            # start a capturing group
  [^\[\]]*     # match any number of characters that are not '[' or ']'
)            # end of capturing group
\]           # match a literal ']'

答案 1 :(得分:1)

尝试在中执行此操作:

$ echo 'this is [stack]overflow. I [[love]this[website]]' |
    grep -oP '\[+\K[^\]]+'
stack
love
website

这适用于PCRE& perl引擎。

<强>说明

\[           # match a literal '['
+            # one (preceding character) or more
\K           # "reset" the regex to null
[^]          # excluding class, here a literal \]
\]           # match a literal ']'

explanations about \K trick