大家。我想寻求帮助以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/