如何扩展PHP正则,移除大写文本时排除指定字符串白名单?
解决方案
可以通过负向先行断言实现白名单功能,修改后的正则表达式会匹配所有长度≥2的大写单词,同时排除白名单中的指定词汇(比如GPS)。
修改后的PHP代码如下:
<?php $txt="THIS CAPITALIZED TEXT EXCEPT GPS MUST BE REMOVED and the rest remains in place."; // 白名单词汇放在(?!...)中,多个词汇用|分隔,比如(?!GPS|USA\b) echo(preg_replace('/\b(?!GPS\b)[A-Z]{2,}\b/','',$txt)); ?>
执行后输出结果:
GPS and the rest remains in place.
正则说明
\b:匹配单词边界,确保只匹配完整的单词(?!GPS\b):负向先行断言,排除恰好等于GPS的单词[A-Z]{2,}:匹配长度≥2的大写英文字母- 如果需要添加多个白名单词汇,只需用
|分隔,比如(?!GPS|NASA\b)即可同时保留GPS和NASA
内容的提问来源于stack exchange,提问作者Petoetje59
相关产品推荐
相关产品推荐

