php – 正则表达式匹配一个’字符’1个字符长
发布时间:2020-12-13 17:41:37 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试解析具有多个大小缩写的产品名称.例如,媒介可以 m,medium,med 我试过一个简单的 preg_match('/m|medium|med/i',$prod_name,$matches); 这适用于’product m xyz’.然而,当我尝试’产品s / m abc’时,我得到了一个假阳性的比赛. 我也试过了 preg_ma
我正在尝试解析具有多个大小缩写的产品名称.例如,媒介可以
m,medium,med 我试过一个简单的 preg_match('/m|medium|med/i',$prod_name,$matches); 这适用于’product m xyz’.然而,当我尝试’产品s / m abc’时,我得到了一个假阳性的比赛. preg_match('/bmb|bmediumb|bmedb/i',$matches); 强迫它在单词中找到,但是s / m中的m仍然匹配.我假设这是由于引擎将名称中的’/’视为单词分隔符? 总而言之,我需要在字符串中匹配’m’,而不是’s / m’或’small’等等.任何帮助都是值得赞赏的. 解决方法%b(?<![/-])(m|med|medium)(?![/-])b% 您可以使用负向lookbehind或lookahead来排除有问题的分隔符.这意味着“m”/“med”/“medium”这是它自己的单词,但不是斜线或短划线之前或后面.它也适用于字符串的开头和结尾,因为负前瞻/后观不会强制存在匹配字符. 如果您只想分隔空格,可以使用正面版本: %b(?<=s|^)(m|med|medium)(?=s|$)b% (“m”/“med”/“medium”,前面是空格或字符串的开头,后跟空格或字符串的结尾) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |