2017-05-17 54 views
2

我有以下正则表达式: (?i)p\[email protected](-)?\w+(-\w+)?(\.\w+)?\.at这是匹配数据,如正则表达式摆脱捕获组

[email protected] 
[email protected] 

我怎么能改写这个正则表达式来使用非captchuring群体?

(?i)p应写为?ip我认为但https://regex101.com我只在尝试将(?:?i)p\[email protected](?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at用于非捕获组时遇到错误。

最后,python3应该评估正则表达式。

+1

你的[** expression works **](https://regex101.com/r/wHgZNz/1) - 只需将修饰符放在表达式之外或使用[**'(?i)p \ w + @ t(?: - )?\ w +(?: - \ w +)?(?:\。\ w +)?\。at'**](https://regex101.com/r/wHgZNz/2) – Jan

回答

5

第一个“组”(?i)不是捕获组,它是一个标记集,打开表达式的不区分大小写。非捕获版本应为:

(?i)p\[email protected]?\w+(?:-\w+)?(?:\.\w+)?\.at 

其中正确匹配。

+0

This当您将原始表达式粘贴到regex101时,您提到的站点:“(?i)将该模式的其余部分与下列有效标志进行匹配:gi i修饰符:不敏感。不区分大小写匹配(忽略[a-zA-Z]的情况)“ – Adrian

+1

对于鱼+1 ;-) – Jan

0

您可以使用

(?i)p\[email protected](?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at 

a demo on regex101.com
正如其他人所指出的那样,(?i)是行内修饰符,如(?s)(单行)或(?m)(多行)。

+0

没有解释为什么这个工作和原来不是? – Adrian

+0

当然。教一个人钓鱼和所有的:) – Adrian