PHP正则如何新增匹配两类含等号与星号的特殊字符串模式
PHP正则修改方案
正则多选分支遵循从左到右匹配、命中即终止的规则,所以更长的特殊匹配规则必须放在短通用规则前面,否则会被短运算符提前截断,导致匹配不符合预期。
修改后的完整正则
/=\*.*|=.*\*|=~|=\*|=|!=|\(\)|>=|<=|>|<//u
注意:你之前贴的正则里的
>、<是HTML转义实体,实际写在PHP代码里直接写>、<即可。
规则说明
两个新增规则放在所有分支最前面,优先匹配长模式:
=\*.*:匹配第二类场景,即=后接*、再跟任意数量任意字符的字符串,比如=*bfrg%1、=*7lk;y=.*\*:匹配第一类场景,即以=开头、中间接任意数量任意字符、结尾为*的字符串,比如=ijnhu9*、=1$n*
原有规则全部保留,不会影响之前已经支持的=~、=*(单独运算符)、=、!=、()、>=、<=、>、<匹配逻辑。
可选调整
- 如果你需要匹配的内容可能包含换行,给正则增加
s修饰符,让.可以匹配换行符即可,写法如下:/=\*.*|=.*\*|=~|=\*|=|!=|\(\)|>=|<=|>|<//su - 如果你需要限制中间字符的范围(比如排除空白符),可以把
.*替换成你需要的字符集,比如[^\s]*代表匹配除空白符外的任意字符。
内容的提问来源于stack exchange,提问作者molupq
相关产品推荐
相关产品推荐

