什么正则表达式模式可用于查找带有括号对中的点的单词。
as. df.kj hlasfa (asd. las kdfh.) dfs adk jfh. a (sd.kf) jhd (dsk fh.) dskfdf asdf dfs lkjh asdfdsfjkhlkjh (asdf.)as fadf asf
所需结果以粗体显示。
最佳答案
您可以使用 lookahead ,断言下一个右括号之前没有左括号:
preg_match_all('/[a-zA-Z]+\.(?![a-zA-Z])(?=[^()]*\))/', $input, $matches);
您将在 $matches
中找到四个匹配项。
第一个否定前瞻消除了 HamZa 在评论中提到的情况。第二个(正)前瞻尝试在下一个左括号之前找到右括号。
这里有一个警告。一旦你有嵌套括号,这就会开始崩溃。 some(text.(here))
与 text.
不匹配。嵌套模式(可能因使用括号而出现)通常超出正则表达式的范围,尽管某些引擎可以部分处理它们。如果您遇到这种情况,您最好手动检查字符串并计算括号数。
关于php - 匹配包裹图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324340/