正则表达式摆脱捕获组
regex get rid of capturing groups
我有以下正则表达式:
(?i)p\w+@t(-)?\w+(-\w+)?(\.\w+)?\.at
匹配的数据如
papFoo@t-bar.at
PapBar@tfoo.ring.at
如何重写此正则表达式以使用 非捕获 组?
[?i]p\w+@t[-]?\w+[-\w+]?[\.\w+]?\.at
将不再匹配任何结果
(?:?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at
同上
即(?i)p
应该像 ?ip
一样可写,但在 https://regex101.com 上,我只会在尝试将 (?:?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at
与非捕获组一起使用时出错。
最后 python3 应该评估正则表达式。
第一个 "group"、(?i)
不是捕获组,它是一个标志集,为表达式打开不区分大小写。非捕获版本应该是:
(?i)p\w+@t-?\w+(?:-\w+)?(?:\.\w+)?\.at
哪个匹配正确。
您可以使用
(?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at
见a demo on regex101.com。
正如其他人所指出的, (?i)
是一个内联修饰符,就像 (?s)
(单行)或 (?m)
(多行)一样。
我有以下正则表达式:
(?i)p\w+@t(-)?\w+(-\w+)?(\.\w+)?\.at
匹配的数据如
papFoo@t-bar.at
PapBar@tfoo.ring.at
如何重写此正则表达式以使用 非捕获 组?
[?i]p\w+@t[-]?\w+[-\w+]?[\.\w+]?\.at
将不再匹配任何结果(?:?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at
同上
即(?i)p
应该像 ?ip
一样可写,但在 https://regex101.com 上,我只会在尝试将 (?:?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at
与非捕获组一起使用时出错。
最后 python3 应该评估正则表达式。
第一个 "group"、(?i)
不是捕获组,它是一个标志集,为表达式打开不区分大小写。非捕获版本应该是:
(?i)p\w+@t-?\w+(?:-\w+)?(?:\.\w+)?\.at
哪个匹配正确。
您可以使用
(?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at
见a demo on regex101.com。
正如其他人所指出的, (?i)
是一个内联修饰符,就像 (?s)
(单行)或 (?m)
(多行)一样。