私は完全なReg-exp noobですので、私にご負担ください。 Googleにこれを試しましたが、まだ見つかりませんでした。正規表現:ドット(。)で始まるファイル名の一致?
.buildpath
または.htaccess
のように、ドットで始まるファイルに一致する正規表現を書くには、どのような方法が適していますか?
ありがとうございます!
私は完全なReg-exp noobですので、私にご負担ください。 Googleにこれを試しましたが、まだ見つかりませんでした。正規表現:ドット(。)で始まるファイル名の一致?
.buildpath
または.htaccess
のように、ドットで始まるファイルに一致する正規表現を書くには、どのような方法が適していますか?
ありがとうございます!
ほとんどの正規表現言語では、^\.
または^[.]
は先頭のドットと一致します。
それはあなたが使用する正規表現ライブラリ上のビットを依存しますが、あなたはこのような何か行うことができます:文字列の先頭に
^\.\w+
^
アンカー試合を、\.
は(文字通りの期間と一致しました通常の正規表現ではエスケープされていない.
は任意の文字に一致するため)、\w+
は1つ以上の "単語"文字(英数字_
)と一致します。
Perlスタイルの正規表現とその構文の詳細は、perlreのマニュアルを参照してください。
ファイル名にはどの文字が有効かは、OSとファイルシステムによって異なります。なり、Windowsの例えば
、:
^\.[^<>:"/\\\|\?\*\x00-\x1f]+$
上記の式は意味:
.
ファイル名ではどの文字が許可されていないかについては、参考としてthisを使用しました。あなたは簡単な式
^\\..*
^を記述する必要がありますJavaでドットで始まる文字列に一致するように
は正規表現が文字列
\の先頭から一致することを意味します。文字列リテラル "。"で始まることを意味します。
。*はドットの後に0以上の文字が続くことを意味します。
それぞれのエスケープ文字には\
を代入する必要があります。しかし、PowerShellの下に私が使用する正規表現は次のとおりです。^(\.)+\/
テストケース:
"../NameOfFile.txt" -match '^(\\.)+\\\/'
作品、
"_./NameOfFile.txt" -match '^(\\.)+\\\/'
はそうではありません。
当然のことながら、ここで何が起こっているのか聞かれるかもしれません。
(\\.
)は、.
の後に前の文字と少なくとも1回以上一致する+
を検索します。
最後に、\\\/
は、それがウィンドウファイルパスに適合することを保証します。
私はあなたの2番目の正規表現が動作しているとは思わない。少なくともperl/java/phpではあなたが意図した通りに動作しません。 –
@Toader:WTF?これは、Perl、Java、PHP、grep、awk、および私が今テストした他のツールで意図された通りに動作します。 – ephemient
じゃあ、私は[]は内部表現とのいずれかを意味すると思った。任意のcharを意味します。私は特別なケースだと思う。それについて読む必要があります;)。申し訳ありませんが、あなたは正しいです。 –