トップページに戻る
次の正規表現パズルへ
前の正規表現パズルへ
6-3 出現回数が2回目以降なら削除その2
正規表現パズル
連続して置換を使って、
行ごとに
縦棒で区切られた文字列の出現回数が、
2回目以降の文字列を削除する。
連続置換前
連続置換後
対象データ
1234|5678|1234|679|1235|1234|679|5678|1234|8888|888|88|888|
111|111|
222|22|2|22|222|2222|22|333|3|33|
正規表現
(^|\|)([^|]+\|)(.*\|)?\2
を
\1\2\3
に置換を繰り返す
別解
(?:^|(?<=\|))([^|]+\|)(.*\|)?\1
を
\1\2
に置換を繰り返す
解説
Oracleの正規表現での文字の置換のアレンジ問題です。
Is it possible to do this using a Regular expression(英語)
キャプチャしながら、マッチを進めて、
後方参照を使ってます。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
行頭との論理和であっても、可変の戻り読みは使えないようです。
EmEditor Professional Version 6.00.2で
対象データが
2X2X
XX2XX
で
正規表現を
(?<=^|X)2
で検索すると、行頭の2しかヒットしません。