https://www.myregextester.com/?r=6fba8b94正則表達式置換事宜
正則表達式是
(\w(s)\b)
示例Word
Dress
- \ 1返回 「換裝」
- \ 2返回 「DRES」
所以我想:
- \ 1 \ 2將返回 「換裝DRES」
但它返回:
"Dress s"
我怎樣才能使它返回 「換裝DRES」
https://www.myregextester.com/?r=6fba8b94正則表達式置換事宜
正則表達式是
(\w(s)\b)
示例Word
Dress
所以我想:
但它返回:
"Dress s"
我怎樣才能使它返回 「換裝DRES」
首先,使用+
量詞與\w
到1個或多個單詞字符匹配(你僅與匹配)。這就是爲什麼你只能得到s
和s
(見your regex in action捕獲ss
作爲組1和s
作爲組2)。
及用途:
(\w+)s\b
隨着\0 \1
更換其中\0
反向引用了整場比賽,和\1
反向引用什麼用(\w+)
抓獲。見demo here。
或者,如果是Perl,請使用((\w+)s)\b
並用\1 \2
(請參閱demo)替換。
請參閱demo
你在那個正則表達式測試器裏誤讀了一些東西。實際上,\1
等於ss
,而\2
等於s
。這是因爲你只匹配兩個字符,\w
和s
。即使您向\w
(即(\w+(s)\b)
)添加了1+量詞,您仍然只會匹配Dress
和s
,因爲第二個捕獲組實際上只是捕獲s
。
如果將這些捕獲組移動一點,就可以成功捕獲「Dress」和「Dres」。一個快速的方面說明,你可以得到整個正則表達式與\0
匹配,所以嵌套的捕獲組在這裏有點不必要。
比賽:(\w+)s\b
替換:\0 \1
Output:連衣裙DRES
請提供您正在使用正則表達式的語言。 –