gpt4 book ai didi

python - "?:"在 Python 正则表达式中意味着什么?

转载 作者:太空狗 更新时间:2023-10-29 21:24:53 27 4
gpt4 key购买 nike

下面是 Python 正则表达式。 ?: 是什么意思?表达式的总体作用是什么?它如何匹配 MAC 地址,例如“00:07:32:12:ac:de:ef”?

re.compile(([\dA-Fa-f]{2}(?:[:-][\dA-Fa-f]{2}){5}), string)  

最佳答案

(?:...) 表示一组非捕获分组括号。

通常,当您在正则表达式中编写 (...) 时,它会“捕获”匹配的 Material 。当您使用非捕获版本时,它不会捕获。

可以在regex匹配的各个部分得到使用 re 中的方法在正则表达式匹配特定字符串后打包。


How does this regular expression match MAC address "00:07:32:12:ac:de:ef"?

这与您最初提出的问题不同。但是,正则表达式部分是:

([\dA-Fa-f]{2}(?:[:-][\dA-Fa-f]{2}){5})

最外面的一对括号是捕获括号;当您成功对字符串使用正则表达式时,它们包围的内容将可用。

[\dA-Fa-f]{2} 部分匹配一个数字 (\d) 或十六进制数字 A-Fa-f] ,在一对 {2} 中,后跟一个非捕获分组,其中匹配的 Material 是冒号或破折号(:-), 然后是另一对十六进制数字, 整个重复恰好 5 次。

p = re.compile(([\dA-Fa-f]{2}(?:[:-][\dA-Fa-f]{2}){5}))
m = p.match("00:07:32:12:ac:de:ef")
if m:
m.group(1)

最后一行应打印字符串“00:07:32:12:ac:de”,因为这是第一组 6 对十六进制数字(字符串中共有七对)。事实上,外部分组括号是多余的,如果省略,m.group(0) 会起作用(它甚至可以与它们一起起作用)。如果您需要匹配 7 对,则将 5 更改为 6。如果您需要拒绝它们,则将 anchor 放入正则表达式中:

p = re.compile(^([\dA-Fa-f]{2}(?:[:-][\dA-Fa-f]{2}){5})$)

插入符 ^ 匹配字符串的开头;美元 $ 匹配字符串的结尾。对于 5,这与您的示例字符串不匹配。用 6 代替 5,它将匹配您的字符串。

关于python - "?:"在 Python 正则表达式中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com