这个正则表达式中的(?i)和?@是什么意思

时间:2014-04-09 11:46:27

标签: regex splunk

在下面的正则表达式中,“(?i)”和“?@”是什么意思?

(?i)<.*?@(?P<domain>\w+\.\w+)(?=>)

我知道“?”表示零或一,我设置不区分大小写。

此正则表达式从mailto字段中的电子邮件地址捕获域,但不包含@符号。它是从SPLUNK 6.0.2

中生成的erex命令

2 个答案:

答案 0 :(得分:14)

演示:https://regex101.com/r/hE9gB4/1

(?i)<.*?@(?P<domain>\w+\.\w+)(?=>)

它实际上从电子邮件ID获取您的域名:

(?i)使其匹配不区分大小写和

?@只不过是@字面上匹配字符@

?中的?@是我们称之为懒惰操作符的.*?的一部分,它将为您提供<和{{1}之间的文字}

如果您在@之后不使用?它将匹配.*之后的所有内容。 (我们称之为贪婪的算子)

答案 1 :(得分:2)

?这是UNGREEDY或LAZYNESS修饰符:

  

*?

这意味着:“一切都很好,直到检测到后面的@字符”。否则。*将匹配所有内容,直到字符串结束。

在此处阅读:http://www.regular-expressions.info/repeat.html