0

この形式の数行 (200 以上) のテキストがあります。

10684 - The jackpot ? discuss   Lev 3    --- ? ---

10755 - Garbage Heap    ? discuss   Lev 5    --- ? ---

「Lev」の後の数値が 3 より大きい場合にのみ、最初の数値 (10684 または 10755) を取得する必要があります。この正規表現を使用して最初の数値を取得できます([0-9]+) -が、「レベル」制限はありません。

これはどのように作ることができますか?

前もって感謝します。

4

5 に答える 5

3

(\d+) - .*?Lev (?:[4-9]|[1-9]\d+)

あなたが行ったように、最初\d+は行番号に一致します。

.*?は遅延量指定子で、あまり多くの文字を消費しません。そして、次の式はそれを適切な場所に導きます。(通常は遅延量指定子の方が効率的です)

2 番目の括弧 は(?:[4-9]|[1-9]\d+)、3 より大きい 1 つのデジタル数、または先行ゼロのない 2 つのデジタル数のいずれかに一致します。

さて、stackoverflow で画像が正しく表示されません。このリンクを利用してください: http://regexr.com?36n5l

出力例:

ここに画像の説明を入力

于 2013-10-12T05:24:48.200 に答える
0

ちょっとした Awk の策略:

awk -F '\? +discuss +Lev' '$2>3 { split($1,a,/ */); print a[1] }' file
于 2013-10-12T15:58:38.917 に答える