簡體   English   中英

正則表達式用於匹配MAC地址或'NA'

[英]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+)

另請參閱https://regex101.com/r/sgGEzh/2

您要匹配正確的東西,只需要擺脫NAAP.+?周圍不必要的捕獲組即可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

DEMO

暫無
暫無

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

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