私は単一のドットとファイル名を持つファイル名を検証する正規表現を構築しようとしていますが三つの部分に下線正規表現は、これは以下の私の正規表現である
で区切られた単一のドットでファイル名を受け入れ入力文字列
ABA_ABA_2015_478.csvは -
ABA_ABA_2015478.js.csvを故障した場合 -
を故障した場合0ABC_BCD_XYZ.js - 合格する必要があります
私にこれを手伝ってください。
私は単一のドットとファイル名を持つファイル名を検証する正規表現を構築しようとしていますが三つの部分に下線正規表現は、これは以下の私の正規表現である
で区切られた単一のドットでファイル名を受け入れ入力文字列
ABA_ABA_2015_478.csvは -
ABA_ABA_2015478.js.csvを故障した場合 -
を故障した場合0ABC_BCD_XYZ.js - 合格する必要があります
私にこれを手伝ってください。
あなたは、この正規表現を使用することができます。
正規表現の分裂:
^
:(?<appname>[^_.]+)
を開始します。マッチとグループ_
とドット(?<eventtype>[^_.]+)
ない長さ1+の任意の文字:マッチとグループ1の任意の文字+長さは_
ではなく、ドット_
:_
(?<counter>[^._]*)
:マッチとグループ_
とドットではありません1+長さの任意の文字\.
:$
に点在されていない1+長さの任意の文字にマッチ:エンド[^.]+
と一致Javaの使用のための :
final String re = "^(?<appname>[^_.]+)_(?<eventtype>[^_.]+)_(?<counter>[^._]*)\\.[^.]+$";
正規表現では、ドット文字は「任意の文字」を意味します。バックスラッシュを使用してエスケープする必要があります(Javaでは、Java文字列でバックスラッシュ自体をエスケープするためにバックスラッシュを倍にする必要があります)。だから、
、右部分は、\.\w+
ような何かを行うことができ、あなたもドットを追跡するためにいくつかの文字をしたい場合。また、左の部分では、部品からドットを除外します - [^_.]*
(または空でない場合は[^_.]+
)。あなたはJavaでmatches()
メソッドを使用している場合、あなたはアンカーが暗黙的としてアンカーを使用する必要はありません
^(?<appname>[^_.]+)_(?<eventtype>[^_.]+)_(?<counter>[^._]*)\.[^.]+$
:
'^(? [^ _] *)_(? [^ _] *)_(? [^ _] *)\。[^ _] * $ ' –