29

以下のように、またはのようではなく、 2 つの単語を含むファイル内の行word_1word_2順番に検索したいと思います。Line ALine BLine C

Line A: ... word_1 .... word_2 .... 
Line B: ... word_1 ....
Line C: ... word_2 ....

私が試してみました

$ack '*word_1*word_2'
$ack '(word_1)+*(word_2)+'

正規表現の先頭に追加された同じコマンド^(Perl 正規表現構文に従う試み)。

これらのコマンドはどれも、関心のあるファイルまたは行を返しません。

私は何を間違っていますか?

ありがとう!

4

1 に答える 1

61

を検索word_1し、その後に任意の回数、その後にword_2. そうあるべき

word_1.*word_2

コマンドライン検索でよく使用されるように使用*しているようですが、正規表現では前の文字の量指定子であり、少なくとも 0 回一致することを意味します。たとえば、正規表現a*は 0 個以上aの に一致しますが、正規表現a+は少なくとも 1 つの に一致しaます。

「何にでも一致する」を意味する正規表現のメタ文字はであり..*「何回でも何回でも一致する」という意味です。トピックの簡単な紹介については、perlrequickを参照してください。

于 2011-04-09T21:18:50.010 に答える