php - 正则表达式,如何在 PHP 中添加更多匹配条件

标签 php regex

大家。我想请帮忙用 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 模式修饰符,因为我猜你不希望跨多行进行这种比较。

如果您预计一行中可能有多个未嵌套的括号集并且您希望分别捕获它们(即 AA(bbbbb)抄送(dddd)).

另请注意,我删除了所有 preg_quote() 无意义的内容,因为它会使您的模式更难阅读。该函数最好保存在您可能将可变字符串数据插入到需要转义的模式中的情况下。这里不是这种情况。

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

相关文章:

php file_get_contents 给出错误

javascript - 使用 foreach 进行循环插入

php - 如何允许来自 .htaccess 密码保护的 url 类型?

正则表达式在 if 语句中匹配带空格的字符串(使用引号?)

Python 正则表达式匹配带转义单引号的引号字符串

c# - 正则表达式查找字符串中所有出现的模式

ruby - 如何选择带标点符号的单词并从缩写中排除句点?

php - mysql_data_seek 不工作

php - 在 Codeigniter 中调用未定义的函数 ibase_connect()

java - 解析 key : value pair with regular expressions