トップページに戻る
次の正規表現パズルへ
前の正規表現パズルへ
5-10 文字列の出現回数と出現順序を指定
正規表現パズル
文字列abc、文字列def、文字列ghi
がそれぞれ1回しか出現せず、
かつ
abc、def、ghiの順番で出現する行を検索する。
検索前
検索後
対象データ
abcdefghi
abcXXXdefXghi
abcXXXghiXXXdef
abcXXXdefXghXXghi
XXabcbcabdeffdghi
abcdef
abcdefghiabcdefghi
abcdefabcdef
abcXdefabXXCXXdefXghi
abcXabcXdefghi
正規表現
^(?=((?!abc).)*abc((?!abc).)*$)
(?=((?!def).)*def((?!def).)*$)
(?=((?!ghi).)*ghi((?!ghi).)*$).*abc.*def.*ghi.*$
別解1
^((?!abc|def|ghi).)*abc
((?!abc|def|ghi).)*def
((?!abc|def|ghi).)*ghi
((?!abc|def|ghi).)*$
別解2
^(?=.*abc)(?!(.*abc){2})
(?=.*def)(?!(.*def){2})
(?=.*ghi)(?!(.*ghi){2}).*abc.*def.*ghi.*$
解説
別解2が一番分かりやすいと思います。