繁体   English   中英

正则表达式摆脱捕获组

[英]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 with non-captchuring groups。

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

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

(?i)p\w+@t-?\w+(?:-\w+)?(?:\.\w+)?\.at

哪个匹配正确。

你可以用

(?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at

请参阅regex101.com上的演示
正如其他人所指出的, (?i)是一个内联修饰符,如(?s) (单线)或(?m) (多线)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM