如何使正則表達式選擇嚴格正則表達式:區分 '名' 和 'name_local'
'name'
:如果搜索 '名',
'name_local'
:如果搜索 'name_local',
但如果搜索「名稱」,不要選擇這兩個選項?
試過 '/('.$key.')(?!_)/'
,但它仍然同時選擇'name'
和'name_local'
如果$key
是name
。
如何使正則表達式選擇嚴格正則表達式:區分 '名' 和 'name_local'
'name'
:如果搜索 '名',
'name_local'
:如果搜索 'name_local',
但如果搜索「名稱」,不要選擇這兩個選項?
試過 '/('.$key.')(?!_)/'
,但它仍然同時選擇'name'
和'name_local'
如果$key
是name
。
您需要的字邊界錨\b
:
'/(\b'.$key.'\b)/'
字邊界不保證匹配的右一塊輸入字符串。例如,如果第二天字符不是單詞字符如name-local
。使用lookarounds:
(?<!\S)name(?!\S)
PHP:
$re = "/(?<!\S)$key(?!\S)/";
正則表達式行使用結束。因爲name和name_會在你的正則表達式中匹配,你會得到兩個結果 – Gahan
必須有其他的東西是錯誤的,因爲負面預覽,它**不匹配'name_local' - [在regex101看到這個](https://regex101.com/r/BNR9X9/1)。 – ClasG