正規表現文字列の使用とin a regex string*
の違いが何であるかを知りたいです。.*
は「0〜n文字」を意味するようですが、それが何を意味するのか*
理解していません。.*
例えば:と?"2013*11*27"
の違いは何ですか?"2013.*11.*27"
私が見ると
find . -name [pattern]
私が試したパターンは"2013.*11.*25"
見つかりませんでした"2013-11-25"
が、を使用して"2013*11*25"
見つけました。
なぜ? Unixでのワイルドカードのゼロまたはnの発生は正規表現であり、*
なぜ.*
機能しないのですか?
ベストアンサー1
*
代表する0個以上のランダム文字存在するシェルワイルドカードマッチ。
*
代表する0回以上発生前の表現 存在する正規表現マッチ。
.
代表する単一のランダム文字存在する正規表現マッチ。
したがって、*
シェルのワイルドカード一致は.*
正規表現の一致と同じです。
「2013*11*27」正規表現の一致一致"2013333111111111127"
が一致しません。ただし、これを使用してファイルを検索する場合(たとえば、シェルが正規表現ではない)、「シェルワイルドカード一致」として処理する引数"2013-11-27"
として使用するとうまくいきます。ls
"2013-11-27"
* (あなたの場合、式はそれぞれ対応する文字3
と正確に一致する単一文字です1
。)