はじめはLinuxで検証用のスクリプトでも作ろうかと思ったのだが、よく考えたら正規表現を使えるコマンドがPower Shellにあるので、それを使えばお手軽に端末で正規表現の検証をできることに気がついたので、方法について記載する。
正規表現検証方法
例えば以下の様なテキストファイルを作るとする。ファイル名は適当に「test.txt」とする。patternAAA01
patternBBB02
patternXXX003
patternYY04
patternZZZ5
ApatternCCC06
この中から「pattern + 英字大文字3文字 + 数字2桁」の条件で抜き出せる正規表現を考えていくことにする。
まず考えた正規表現は以下の通りになったとする(先に言ってしまうと、これでは最適な結果は得られない)。
<正規表現>
pattern[A-Z]{3}\d{2}
これを検証する方法は、別記事で書いた「Windows標準コマンドでgrepする」で記載した"Select-String"コマンドレットを使えば良い。"-Pattern"のオプションを使えば正規表現での検索が使える。
<コマンド>
Select-String .\test.txt -Pattern "pattern[A-Z]{3}\d{2}"
<結果>
test.txt:1:patternAAA01
test.txt:2:patternBBB02
test.txt:3:patternXXX003
test.txt:6:ApatternCCC06
上記の結果の通り、No3とNo6が余計に引っかかってしまった。改良して以下の正規表現にしてみる。
<正規表現>
^pattern[A-Z]{3}\d{2}$
<コマンド>
Select-String .\test.txt -Pattern "^pattern[A-Z]{3}\d{2}$"<結果>
test.txt:1:patternAAA01
test.txt:2:patternBBB02
想定通りの動作となる正規表現であることが確認できた。
参考URL
.NET Framework の正規表現https://msdn.microsoft.com/ja-jp/library/hs600312(v=vs.110).aspx
正規表現言語 - クイック リファレンス
https://msdn.microsoft.com/ja-jp/library/az24scfc(v=vs.110).aspx
0 件のコメント:
コメントを投稿