下面是變換我想在正則表達式做一個表:如何替換Regex中最後重複的字母?
From To
================
CAT CAT
EGG EGG
A A
Z Z
AA ZA
BB ZB
ZZ ZZ
AAA ZZA
HHHHH ZZZZH
換句話說,這裏的字符串是相同的字母重複2次以上,我想替換所有字母除了最後一個與Z.
我在這裏被精神阻塞。這是我想出,到目前爲止,這是行不通的:
FIND: ^(?<=\1*?)([A-Z])(?=\1+)$
REPLACE: Z
我不確定是否反向引用甚至可以捕捉組之前使用,但無論哪種方式,取代了第一\1
與.
沒有幫助。
我正在使用C#,所以我正在尋找.NET風格的正則表達式。我當然可以用普通的字符串操作來做到這一點,但我有一個商業案例特定的需要使用正則表達式。
爲什麼EGG不應與EZG被取代? – m0skit0
因爲重複的字符不是*完全相同的字符*應該保持不變。 – richardtallent
順便說一句,我不認爲正則表達式可以應用於這種情況,因爲你的語言不規則,在這種情況下沒有上下文,因爲正則表達式必須知道哪個字符應該重複,並且這不是上下文無關的(我認爲...)。 – m0skit0