隣接する重複した文字を削除する適切な正規表現は何ですか?例えば重複する文字は削除しますが数字は削除しないでください
:
p11ppppl --> p11pl
私は、次の正規表現持っていた:
/[^\w\s]|(.)(?=\1)/g
をこれも重複した数字に置き換えられます。
隣接する重複した文字を削除する適切な正規表現は何ですか?例えば重複する文字は削除しますが数字は削除しないでください
:
p11ppppl --> p11pl
私は、次の正規表現持っていた:
/[^\w\s]|(.)(?=\1)/g
をこれも重複した数字に置き換えられます。
私は(可視化here)このようにそれを行うだろう。ここでは
/([a-zA-Z])(?=\1)/g
は、Pythonでの例です:
In [21]: re.sub(r'([a-zA-Z])(?=\1)', '', 'p11ppppl')
Out[21]: 'p11pl'
また、使用することができます
すべてのため/([\D])(?=\1)/g
除きます数字、または:
/([\w])(?=\1)/g
すべての「単語文字」です。コメントで述べたよう@Casimir et Hippolyte
、我々はまた、使用することができます。より良い方法かもしれ置換文字列、など\1
と
/([a-zA-Z])\1+/g
。
'/([a-zA-Z])\ 1 +/g'を置換文字列として' \ 1'で書くと、1回の置換で連続するすべての複製を削除します。 *(重複した手紙による置き換えの代わりに)*。 –
これをPythonで試してみると、 '' p11 \ x01ll'';うん... – Will
置き換え文字列 'r '\ 1''に生の文字列を使用するか、バックスラッシュ' \\ 1''をエスケープします。 –
おそらく['[^ \ w \ s] |(\ D)(?= \ 1)'](https://regex101.com/r/lQ0aJ9/1)? –
それは動作します! |何をしますか? (\ D)と削除(。)の削除? (私は正規表現ではあまり良くありません) – user4043891
'\ D'は非数字文字と一致します。 –