正则表达式匹配括号内的字符串

时间:2017-09-17 10:12:31

标签: regex spaces brackets

我使用以下正则表达式来匹配括号内的字符串:

\((.*?)\)

但这与此相符:

(word)

这也是:

( word )

我需要将其修改为仅匹配第一种情况:括号内的字词没有空格:(word)

有什么想法吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以使用此模式:

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

[^\s()]确保第一个字符不是空格或括号(并且必须至少包含一个字符)。

(?: [^()]* [^\s()] )?是可选的。如果匹配,则相同的字符类确保最后一个字符不是空格。

答案 1 :(得分:1)

使用lookahead/lookbehind在左括号之后和右括号之前禁止空格:

\((?!\s)[^()]+(?<!\s)\)

(?!\s)(?<!\s)表示&#34;后面没有/后面没有空格&#34;。

中间的部分[^()]+要求括号中有一个或多个字符,不允许()匹配。

Demo.

答案 2 :(得分:0)

Word Boundaries

\(\b[^)]+\b\)