0

"aaa"コードを見た後、この正規表現は行全体ではなく6桁のコードのみを出力する正規表現を書く必要があります。1 行に 6 桁のコードが 1 つだけあり、それは の後にあり"aaa"ます。

sed、、 ... などawkは使用できませんgrep。私のアプリケーションは正規表現のみを受け入れます。

例:

x aaa    y z    123456          returns  123456

aaa  x  654321   y z            returns  654321

この正規表現を後方参照で試しましたが、繰り返さない方法がわかりませ[\d]{6}

(.*)(aaa)(.*)[\d]{6}((?(2)[\d]{6}|.+)

しかし、それは行全体を印刷します。

助言がありますか?

4

1 に答える 1

0

次のようなことができます

aaa.+?(\d{6})

そして、最初のグループのみを返します (with \1)

別の正規表現で後方参照を使用することもできます。

(?<=aaa.+?)\d{6}

これは、aaa の後の最初の 6 桁とその他の文字が必要であることを意味します。残念ながら、多くの言語は可変長の後方参照をサポートしていないため、最初のものを使用します

于 2012-08-23T13:12:26.860 に答える