[英]RegEx for matching MAC address or 'N A'
我有一個正則表達式可以正確匹配我正在處理的數據子集。 當我針對完整的數據集運行它時,它開始失敗。 我注意到有些值是'NA'而不是MAC地址或AP名稱,具體取決於列。
樣本數據:
00:0b:85:57:bc:c0 00:0b:85:57:bc:c1 AP1130 10.10.163.217 Joined
00:1c:0f:81:db:80 00:1c:63:23:ac:a0 AP1140 10.10.163.216 Joined
00:1c:0f:81:fc:20 00:1b:d5:9f:7d:b2 AP1 10.10.163.215 Joined
00:1c:0f:81:fc:20 N A N A 10.10.163.215 Not joined
00:21:1b:ea:36:60 00:0c:d4:8a:6b:c1 AP2 10.10.163.214 Joined
正則表達式:
((?:(?:[0-9a-f]{2}[:-]){5})(?:[0-9a-f]{2}))(?:\s+?)(((?:(?:[0-9a-f]{2}[:-]){5})(?:[0-9a-f]{2}))|(N A))(?:\s+)((AP.+?)|(N A))(?:\s)
我已經修改了我的正則表達式,但是它仍然與MAC地址或“ NA”不匹配。 名稱字段相同:匹配AP名稱或“ NA”
我的現狀: https : //regex101.com/r/sgGEzh/1
我認為方括號不正確,但是我看不到我的(|)OR運算符出現故障的地方。 我現在正在重復某些組。
我應該匹配第一個MAC地址,第二個MAC地址或字符串“ NA”,最后一個AP名稱或字符串“ NA”。
我應該每行總是得到三個匹配的組。
直到嘗試處理'NA'字符串為止。
這是我對您的輸入數據和要求的看法:
([a-f0-9]{2}(?::[a-f0-9]{2}){5})\s+((?:[a-f0-9]{2}(?::[a-f0-9]{2}){5})|N A)\s+(N A|\S+)
您要匹配正確的東西,只需要擺脫NA
和AP.+?
周圍不必要的捕獲組即可AP.+?
。 這些導致這些字符串最終以不同的組形式出現在結果中。 您只需要3個捕獲組。
您還有許多其他確實不需要的組,例如\\s+?
周圍的非捕獲組\\s+?
。 您不需要每個|
如果他們已經在組中,則選擇另一種方法。 量化時,您唯一需要的非捕獲組是[0-9a-f]{2}[:-]
周圍的組。
以下工作並刪除所有冗余組:
((?:[0-9a-f]{2}[:-]){5}[0-9a-f]{2})\s+?((?:[0-9a-f]{2}[:-]){5}[0-9a-f]{2}|N A)\s+(AP.+?|N A)\s
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.