正则表达式摆脱捕获组

regex get rid of capturing groups

我有以下正则表达式: (?i)p\w+@t(-)?\w+(-\w+)?(\.\w+)?\.at 匹配的数据如

papFoo@t-bar.at
PapBar@tfoo.ring.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) (多行)一样。