[英]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.