正则表达式匹配括号内的字符串,周围没有空格

Regex to match strings inside brackets with no spaces around

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

\((.*?)\)

但这与此匹配:

(word)

还有这个:

( word )

我需要修改它以仅匹配第一种情况:括号内的单词周围没有空格:(word)

有什么想法吗?

提前致谢

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

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

(?!\s)(?<!\s) 表示 "not followed by / not preceded by a space"。

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

Demo.

您可以使用这种模式:

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

[^\s()] 确保第一个字符不是空格或括号(并强制至少一个字符)。

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

Word Boundaries

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