我正在寻找能够处理以下问题的正则表达式模式:
(to make someone) happy (adj.)
我只想得到“快乐”这个词,如果只有一个部分在括号中,正则表达式也应处理行,例如:
(to make someone) happy
happy (adj.)
我尝试了以下内容:"\s*\(.*\)"
但我的想法有些不对劲!
答案 0 :(得分:2)
这一个将在所有三个选项中为您提供第一个捕获组中的正确单词:
(?:\([^)]*\)\s*)?(\w+)(?:\s*\([^)]*\))?
如果您想要获得一些单词或允许使用特殊字符,您可以进行调整并更加宽松:
(?:\([^)]*\)\s*)?([^()\n]+)(?:\s*\([^)]*\))?
答案 1 :(得分:0)
用于在两个带括号的组之间查找文本的正则表达式是
/(?:^|\([^)]*\))([^(]*)(?:$|\([^)]*\))/m
细分如下:
(?:^|\([^)]*\))
。这从开放的paren到第一个关闭的paren ([^(]*)
中。这符合下一个开放的paren。(?:$|\([^)]*\))
我使用了多行模式(m
),以便^
和$
匹配换行符以及字符串的开头和结尾
答案 2 :(得分:0)
尝试正则表达式(?:^|\))\s*([^\(\)]+?)\s*(?:\(|$)