[英]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
。
使用preg_replace基於正則表達式進行替換。
$string_modified = preg_replace('/_id(\b|_)/','_ID$1',$string);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.