大家。我想寻求帮助以PHP编写正则表达式的语句

 // This will match everything between "("  and ")"
'#('.preg_quote('(').')(.*)('.preg_quote(')').')#si'

//But I want to add one more condition
//-> Only match before "(" contains at least 2 Capital Letters continued.

例如,
 // (bbbbb)     <- No
 // aa(bbbbb)   <- No
 // A(bbbbb)    <-No
 // AA(bbbbb)   <- Yes
 // AAA(bbbbb)   <- Yes

我该怎么做?

非常感谢你!!

最佳答案

您可以像这样制作正则表达式:

$regex = '#[A-Z]{2,}\((.*)\)#';

注意我确实要区分大小写,所以删除了不区分大小写的模式修饰符i。我还删除了s模式修饰符,因为我不希望跨多行进行此比较。

如果您期望一行上可能有多个未嵌套的括号集,并且希望分别捕获它们(即U),则可以考虑使用不贪心的模式修饰符AA(bbbbb) CC(ddddd)

另请注意,我摆脱了所有preg_quote()的废话,因为它使您的模式更难以阅读。在您可能需要将要转义的模式中插入可变字符串数据的情况下,最好保存该函数。这里情况不同。

关于php - 正则表达式,如何在PHP中添加更多匹配条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20056680/

10-12 20:09