Вот таблица для преобразования я хочу сделать в Regex:Как заменить все, кроме последнего повторяющегося письма в 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
Btw Я не думаю, что в этом случае могут применяться регулярные выражения, потому что в этом случае ваш язык не является регулярным, а не контекстом, потому что регулярное выражение должно каким-то образом знать, какой символ следует повторять, и это не является контекстом (я думаю ...). – m0skit0