我有以下正则表达式('([a-z]+)'|\[([a-z]+)\])
,它将从pfSense中OpenVPN生成的以下日志行中的两者中捕获用户名joebloggs。
问题在于,在一种情况下,它捕获方括号,而在另一种情况中,捕获引号。
很明显,这是设计使然的 ,以便捕获两种日志格式的字符串,但理想情况下,我只想捕获用户名,无须穿衣。
捕获pf日志的日志系统是Graylog2(使用Java Regex匹配)-提取程序将仅捕获第一个捕获组,因此为什么将其完全封装在其中。
答案 0 :(得分:1)
您可以使用
(?<=')[a-z]+(?=')|(?<=\[)[a-z]+(?=])
或者,如果必须有一个捕获组,请使用
((?<=')[a-z]+(?=')|(?<=\[)[a-z]+(?=]))
详细信息
(?<=')[a-z]+(?=')
-1个小写ASCII字母紧跟'
字符|
-或(?<=\[)[a-z]+(?=])
-1个以上的小写ASCII字母,其前面紧跟[
,之后紧跟]
个字符。