可以使用什么正则表达式模式来查找带有括号对中的跟随点的单词。
为。 df.kj hlasfa( asd。 las kdfh。)dfs adk jfh。 a(sd.kf)jhd(dsk fh。 )dskfdf asdf dfs lkjh asdfdsfjkhlkjh( asdf。)as fadf asf
期望的结果是粗体。
答案 0 :(得分:3)
您可以使用lookahead,声明在下一个结束之前没有左括号:
preg_match_all('/[a-zA-Z]+\.(?![a-zA-Z])(?=[^()]*\))/', $input, $matches);
您会在$matches
找到四个匹配项。
第一个否定先行消除了评论中HamZa提到的案例。第二个(正)前瞻试图在下一个开头之前找到一个右括号。
这里有一个警告。一旦嵌套括号,这将开始崩溃。 some(text. (here))
与text.
不匹配。嵌套模式(可以通过使用括号出现)通常超出正则表达式的范围,尽管某些引擎可以部分处理它们。如果是这种情况,你最好手动完成字符串并计算括号。
答案 1 :(得分:2)
众多选择之一是:
\b[a-zA-Z]+[.](?=[ )])(?=[^(]*[)])