\b?\b不匹配單個表情符號:“?”。\b\u2B07\b不匹配:'??'。\b-\b 與“-”不匹配。\bfoo\b當然匹配“foo”。為什么會發生這種情況以及確保我的表情符號或任何特殊字符不在字符串中間的替代方法游樂場: https: //regex101.com/r/jRaQuJ/2
1 回答

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
您可以使用該模式:
(?<!\w)?(?!\w)
這使用否定環顧來匹配兩邊都沒有單詞字符的表情符號。
您詢問的匹配的原因是\b零寬度邊界,其中邊界的一側是\w(單詞字符或[0-9A-Za-z_]),另一側是字符串或\W(非單詞字符)的開頭或結尾。
例如,考慮字符串"foo.":
start of string boundary (zero width)
|
| non-word character
| |
v v
foo.
^ ^
| |
word characters
邊界\b可以在正則表達式中使用,并通過和字符之間的邊界以及字符串開頭和 字符 之間的邊界\bfoo\b找到匹配項。o.f
"foobar"不匹配,\bfoo\b因為第二個oandb不滿足邊界條件,即b不是非單詞字符或字符串結尾。
該模式\b-\b與字符串不匹配,"-"因為"-"不是單詞字符。同樣,表情符號是由非單詞字符構建的,因此它們不會像單詞字符那樣響應邊界,就像 的情況一樣\bfoo\b。
添加回答
舉報
0/150
提交
取消