0

ログから -(4)- を抽出する必要があり、正規表現を使用する必要があります。私のコードは

regex /(?!-)\d{1}+(?=-)/  

入力は

ASA-5510-6 : %ASA-4-106023: Deny udp src INTERNET:TEJ-BHARTI-ILL-2Mbps-

しかし、この正規表現では、同様の他のパタ​​ーン (-5510-) も抽出されます。この(4)特定の4つを抽出したいだけです。

ログ全体は

2011-12-01T00:02:04.382593+05:18 Dec 01 2011 00:00:29 KOC-TEJ-AMEX-ASA-5510-6 : %ASA-4-106023: Deny udp src INTERNET:TEJ-BHARTI-ILL-2Mbps-ROUTER-LAN-IP/58653 dst TCS:VIS-SYSLOG-SERVER/514 by access-group "INTERNET_access_in" [0xc97c8100, 0x0]

ありがとう

4

3 に答える 3

0

%ASA を後読みに入れるだけです。また、{1}は冗長で、 は+複数の 4 に一致します。

/(?<=%ASA-)4(?=-)/g単に 4 に一致させたい場合。

/(?<=%ASA-)\d+(?=-)/g数字のグループを一致させたい場合。

(入力例で 4 と一致するだけなのか、それとも何か 4 と一致するのかわかりませんでした)

于 2012-08-01T05:27:37.717 に答える
0

これはどう:

/%ASA-(\d+)-/

ログの「%ASA-」の後の数字を照合しようとしているようです。

+ を使用しているため、\d の後の {1} は必要ありません。{1} は 1 桁のみを意味し、+ は複数の桁が必要であることを意味します。{1}+ は、複数の 1 桁が必要であることを意味します。これは、単なる複数桁と同じです。

ドキュメントによると、次の構文で一致グループ (括弧内のもの) を返すことができます。

create view Phone as
extract regex /(\d{3})-(\d{3}-\d{4})/ 
    on between 4 and 5 tokens in D.text 
    return 
        group 1 as areaCode
        and group 2 as restOfNumber
        and group 0 as fullNumber
from Document D;

グループ 0 は完全一致であるため、必要なのはグループ 1 であり、これは括弧で囲まれた最初のキャプチャ グループです。クエリの最後に「return group 1 as someNumber」を追加すると、うまくいくはずです。

于 2012-08-01T05:23:17.683 に答える
0

とは異なりlookaheads、JavaScript は正規表現lookbehind構文をサポートしていません。これらの投稿を参照してください。

于 2012-08-01T05:36:15.833 に答える