トップページに戻る    次の正規表現パズルへ    前の正規表現パズルへ

5-2 行末からペアを作成

正規表現パズル

行ごとに、行末から見て、
Xでくくられた部分を検索する。

検索前


検索後


対象データ

12345X6789X0
1X234X56X9012X345
X1234X567X123
X1234X567X123X
2X123X1234X56X123X


正規表現

X[^X]*X(?=(([^X]*X){2})*[^X]*$)

別解

(?=(([^X]*X){2})*[^X]*$)X[^X]*X


解説

肯定先読みで、Xが偶数個あるかチェックしてます。

行頭からXでくくられた部分を検索する場合は、
可変長の戻り読みが使えないと無理っぽいですね。

固定長の戻り読みを、選択でひたすらつなげるのもありかもしれませんが
3-21 可変長の戻り読みを模倣

2007/2/8 時点で、可変の戻り読みが使えるのは、
.NETしか知らないです。