電子書籍の厳選無料作品が豊富!

ツールが対象ファイルを認識する規則が正規表現で記載されているのですが、
正規表現について無知なため、解読することができずに困っております。
ネット等で検索し、[A-Z0-9]や{4,4}など部分的には解読することができたのですが・・・

FILE_COPY.REGEX1=<ABC>\t.+\\\\ABC(\\\\.*)?\\\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\\\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\\.gz

FILE_COPY.REGEX2=<DEF>\t.*\\\\[^\\\\]*(?<\!\\.tar)

FILE_COPY.REGEX3=<GHI>\t.+\\.xml\\.gz

どなたかお時間のある方がいらっしゃいましたら、ご教示いただけないでしょうか。
どうぞよろしくお願いいたします。

A 回答 (1件)

まず、この正規表現を処理するのが何かを確認して、そのマニュアルとか説明書とかを読むこと。


正規表現は、その処理するプログラム言語やライブラリによって違いがあります。

\\が多く出てきているので、予想としては、一度\によるエスケープを処理したものが正規表現になっていると思われます。
これは、CやJavaで文字列に\を記述するときに "\\"等と書くのと同様ではないかと思われます。

また、
FILE_COPY.REGEX1=
で、設定の順番

ファイル名に一致させようとするなら、\t(タブ文字)がファイル名に含まれるのも稀なので
<ABC>
が設定名かなにか、 \t が前後の区切りで、後半が正規表現ではないかと予想されます。

これらは、そのファイルの中身がどうなっているかを、マニュアルなので確認してください。



正規表現の基本は
「文字列を特定するためパターン」「そのパターンがいくつ続くか(1回だけなら省略可」
のくりかえしです。

.+\\\\ABC(\\\\.*)?\\\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\\\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\\.gz
は、先のように\を処理して
.+\\ABC(\\.*)?\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\.gz
という正規表現だと思われます。
これを上記の「パターン」と「数」に分解していくと
.+
\\
A
B
C
(\\.*)?
\\
[A-Z0-9]{4,4}
[0-9]{3,3}
[A-Z0-9]+
\\
[A-Z0-9]{4,4}
[0-9]{3,3}
[A-Z0-9]+
\.
g
z
となり、それぞれ
.+ .は任意の文字。それが1つ以上続くものにマッチ
\\ \は後の文字とセットで特殊な意味を持ったり、元の意味を消したりする。この場合は、\の特殊な意味を消し、「\という文字」にマッチ
A Aという文字にマッチ
B Bという文字にマッチ
C Cという文字にマッチ
(\\.*)? (\\.*)というパターンが0個か1個。()の中は 「\の後に0文字以上の任意の文字列」
\\
[A-Z0-9]{4,4} [A-Z0-9]が4回。つまり [A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9] の意味
以下略

となっていきます。これでどんなパターンがマッチするかわかると重います。
3番目は非常に簡単です。

2番目でややこしいのは
(?<\!\\.tar)
の部分で、おそらく
・\!というのはあまり標準ではありませんが、!がコメント等の特殊な意味になるので、\で打ち消しているのではないでしょうか?
・そうなると、↓の意味になりそうです。が、他の意味かもしれません
http://www.kt.rim.or.jp/~kbk/regex/regex.html#NE …
    • good
    • 0
この回答へのお礼

丁寧な回答を頂き、大変感謝しております。
ご回答をもとに、マニュアルと比較しながら細かい点を確認したいと思います。
この度はありがとうございました。

お礼日時:2013/03/17 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!