正则表达式匹配括号内的字符串,周围没有空格
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"。
中间的部分,[^()]+
要求括号之间有一个或多个字符,不允许()
匹配。
您可以使用这种模式:
\([^\s()](?:[^()]*[^\s()])?\)
[^\s()]
确保第一个字符不是空格或括号(并强制至少一个字符)。
(?: [^()]* [^\s()] )?
是可选的。如果匹配,相同的字符 class 确保最后一个字符不是空格。
\(\b[^)]+\b\)
我正在使用以下正则表达式来匹配括号内的字符串:
\((.*?)\)
但这与此匹配:
(word)
还有这个:
( word )
我需要修改它以仅匹配第一种情况:括号内的单词周围没有空格:(word)
有什么想法吗?
提前致谢
使用lookahead/lookbehind禁止space在左括号之后和右括号之前:
\((?!\s)[^()]+(?<!\s)\)
(?!\s)
和 (?<!\s)
表示 "not followed by / not preceded by a space"。
中间的部分,[^()]+
要求括号之间有一个或多个字符,不允许()
匹配。
您可以使用这种模式:
\([^\s()](?:[^()]*[^\s()])?\)
[^\s()]
确保第一个字符不是空格或括号(并强制至少一个字符)。
(?: [^()]* [^\s()] )?
是可选的。如果匹配,相同的字符 class 确保最后一个字符不是空格。
\(\b[^)]+\b\)