簡體   English   中英

使用正則表達式選擇字符串中的子字符串“ _id”

[英]Select substring “_id” in string using regular expressions

我需要有關正則表達式的幫助。 我需要選擇“ _id”並將其替換為“ _ID”,但不知道該如何正確使用。 示例字符串:“ test_id”必須為“ test_ID”,但“ test_identification_number”不得為“ test_IDentification_number”。

目前,我有這樣的正則表達式:/(?:_ id $ | id )/,但無法正常工作,因為它無法將_id替換為_ID並將_id__ID_

謝謝。

**編輯:我使用PHP。

我會使用這種模式:

preg_replace('/(?<=_)id(\b|_)/', 'ID$1', $string);

演示

這個怎么運作:

  • (?<=_) :正向查找:模式的其余部分僅在下划線開頭的情況下才匹配。 下划線本身未被捕獲(即未替換)
  • id :字符串文字->顯然匹配id
  • (\\b|_) :單詞邊界( \\b )或下划線的分組匹配。 此分組是必需的,因為像(?:\\b|_)這樣的正向前瞻會捕獲結尾的下划線(因此您必須將其替換為'ID$1' ,但是如果前瞻與單詞邊界匹配( 參見regex101

您可以使用單詞邊界限定符: \\b僅在字符串的開頭,字符串的末尾或前一個或后一個字符不是單詞字符時匹配。

因此_id\\b應該只匹配以_id結尾的單詞,而不是_identifier

我的解決方案

搜索字符串: /(?<=_)id\\b/g

替換字符串: ID

使用preg_replace基於正則表達式進行替換。

$string_modified = preg_replace('/_id(\b|_)/','_ID$1',$string);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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