[英]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.