以下格式的正则表达式(XXXXXXG0-XXXX-XXXX-1923-785FEABCD 128)是用来过滤MAC地址的,所以我需要那些具有上述格式和长度定义字符的MAC地址。
是否可以为上述格式编写regexp?X字符可以是字母数字。但其他非X字符应该是相同的。
ABCDEFG0-GHYD-SDER-1923-785FEABCD128 - Valid
ABCDEFH0-GHYD-SDER-0923-995FEABCD120 - Invalid
ABCDEFG0-GHYD-SDER-0923-995FEABCD120 - Invalid发布于 2021-12-08 16:44:38
^[a-zA-Z0-9]{6}G0-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-1923-785FEABCD128$解释:
^匹配字符串的开头
[a-zA-Z0-9]{6}与任何字母数字字符匹配6次。
G0-与文本完全匹配。
[a-zA-Z0-9]{4}-任何字母数字字符4次后接连字符(出现两次)
1923-785FEABCD128与文本完全匹配。
$与字符串的末尾匹配。
发布于 2021-12-08 16:45:16
import re
patt = re.compile('[A-Z0-9]{6}G0-[A-Z0-9]{4}-[A-Z0-9]{4}-1923-785FEABCD128')
for test in ['ABCDEFG0-GHYD-SDER-1923-785FEABCD128', 'ABCDEFH0-GHYD-SDER-0923-995FEABCD120', 'ABCDEFG0-GHYD-SDER-0923-995FEABCD120']:
if patt.match(test):
print(f'{test} - Valid')
else:
print(f'{test} - Invalid')版画
ABCDEFG0-GHYD-SDER-1923-785FEABCD128 - Valid
ABCDEFH0-GHYD-SDER-0923-995FEABCD120 - Invalid
ABCDEFG0-GHYD-SDER-0923-995FEABCD120 - Invalid发布于 2021-12-13 21:04:43
为了字符串匹配而不是正则表达式,可以使用以下解决方案:
mac_addresses = [
'ABCDEFG0-GHYD-SDER-1923-785FEABCD128',
'ABCDEFH0-GHYD-SDER-0923-995FEABCD120',
'ABCDEFG0-GHYD-SDER-0923-995FEABCD120'
]
for address in mac_addresses:
# splits 3 times, leaving the last two groups together
# for easier string matching
first, *_, last = address.split('-', 3)
if first.endswith('G0') and last == '1923-785FEABCD128':
match = 'Valid'
else:
match = 'Invalid'
print(f"{address} - {match}")哪种指纹
ABCDEFG0-GHYD-SDER-1923-785FEABCD128 - Valid
ABCDEFH0-GHYD-SDER-0923-995FEABCD120 - Invalid
ABCDEFG0-GHYD-SDER-0923-995FEABCD120 - Invalid这里的救济金?如果需要更改条件或添加新条件,则不需要修改/跟上正则表达式
https://stackoverflow.com/questions/70278548
复制相似问题