簡體   English   中英

正則表達式用兩個大寫字母替換任何單詞

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM