簡體   English   中英

正則表達式用於排除字符並找到證書匹配項

[英]Regex for exclude characters and find a certan match

我必須從日志中提取-(4)-,並且必須使用正則表達式。 我的代碼是

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

輸入是

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

但是使用此正則表達式,它也可以提取類似的其他模式(-5510-)。 我只希望提取此(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]

謝謝

這個怎么樣:

/%ASA-(\\ d +)-/

看起來您正在嘗試匹配日志中“%ASA-”之后的數字。

因為使用+,所以不需要\\ d后的{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,它是第一個帶括號的捕獲組。 在查詢末尾處理“將第1組返回為someNumber”應該可以解決問題。

只需將%ASA放在后面即可。 同樣, {1}是多余的,而+匹配多個4。

/(?<=%ASA-)4(?=-)/g如果您只想匹配4。

/(?<=%ASA-)\\d+(?=-)/g如果要匹配任何數字組。

(我不確定您是否只想匹配輸入示例中的4或4)

lookaheads不同,JavaScript不支持Regex lookbehind語法。 看到這些帖子:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM