我有以下正则表达式:
(?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应该评估正则表达式。
答案 0 :(得分:5)
第一个“组”(?i)
不是捕获组,它是一个标志集,打开表达式的不区分大小写。非捕获版本应为:
(?i)p\w+@t-?\w+(?:-\w+)?(?:\.\w+)?\.at
哪个匹配正确。
答案 1 :(得分:0)
您可以使用
(?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at
请参阅a demo on regex101.com
正如其他人所指出的,(?i)
是一个内联修饰符,(?s)
(单行)或(?m)
(多行)。