[英]regex to replace any word with two capital letters
我想替换任何包含两个大写字母的单词。
这是我的字符串
jennie-garth-jennie-garth-inner-city-arts-gala-october-17-2012-If9aSpTW
jennie-garth-jennie-garth3892-H9rDcbY
我想用 - 替换-If9aSpTW
这些-If9aSpTW
不同,所以我不能使用str_replace
。 我只能用一个单词中的两个大写字母来识别。 这些单词结尾,但这些类型的单词出现在总数据库值的20%,所以我不能替换所有的最后一个单词。
str_replace
是上下文不知道的,你也不能使用substr
因为你需要在文本的最后一个非连字符块中检查2个大写字母。 所以你真的必须坚持preg_replace
正则表达式替换。
您可以使用以下正则表达式:
preg_replace('/-(?:[^-]*[A-Z]){2,}[^-]*$/', '', $str);
请参阅正则表达式演示 。
模式匹配:
-
- 连字符 (?:[^-]*[AZ]){2,}
- 2次或更多次出现(由于{2,}
限制量词):
[^-]*
[AZ]
- 一个大写字母 [^-]*
- 除零以外的零个或多个字符-
$
- 结束字符串 PHP :
$str = 'jennie-garth-jennie-garth-inner-city-arts-gala-october-17-2012-If9aSpTWe';
echo preg_replace('/-(?:[^-]*[A-Z]){2,}[^-]*$/', '', $str);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.