1

我正在寻找能够处理以下问题的正则表达式模式:

(to make someone) happy (adj.)

我只想得到“快乐”这个词,如果只有一部分在括号中,正则表达式模式也应该处理行,例如:

  • (to make someone) happy
  • happy (adj.)

我尝试了以下方法:"\s*\(.*\)" 但我的想法有点错误!

4

3 回答 3

2

这将在所有三个选项的第一个捕获组中为您提供正确的词:

(?:\([^)]*\)\s*)?(\w+)(?:\s*\([^)]*\))?

如果您想获得几个单词或允许特殊字符,您可以调整并更加宽容:

(?:\([^)]*\)\s*)?([^()\n]+)(?:\s*\([^)]*\))?
于 2012-08-13T13:38:33.173 回答
0

尝试正则表达式(?:^|\))\s*([^\(\)]+?)\s*(?:\(|$)

于 2012-08-13T13:42:13.290 回答
0

用于在两个带括号的组之间查找文本的正则表达式是

/(?:^|\([^)]*\))([^(]*)(?:$|\([^)]*\))/m

细分如下:

  1. 从括号中的一些文本或行首开始:(?:^|\([^)]*\)). 这从一个开放的paren匹配到第一个封闭的paren
  2. 然后匹配括号外的文本,并放在一个 group([^(]*)中。这与下一个开放的括号相匹配。
  3. 然后在括号或行尾匹配更多文本:(?:$|\([^)]*\))

我使用了多行模式 ( m) 以便匹配换行符以及字符串的开头和^结尾$

于 2012-08-13T13:35:08.333 回答