[英]Extracting information from a log file using a regex
解决以下问题: http : //regexone.com/example/6 ?
我发现自己无法使用正则表达式捕获第一个括号。 到目前为止,这是我的正则表达式: at (\\w+).(\\w+)\\.(\\w+)
这是我的正则表达式应处理的示例行: at widget.List.makeView(ListView.java:1727)
要捕获某些括号之间的所有内容,请包括括号:
(\\(.*?\\))
。 例如,这会将'(ListView.java:1727)'放置在捕获组1中,您可以根据正则表达式的风格将其引用为\\1
。
因此, (\\(.*?\\))
将以可通过\\ 1访问的'(ListView.java:1727)'结尾。
如果要在括号内进行匹配,但不希望将括号本身作为捕获的一部分捕获,则可以执行: \\((.*?)\\)
。 现在\\ 1为'ListView.java:1727'。
如果要在括号中包含单个内容,可以执行\\((.*?):(.*?)\\)
。 这将使\\ 1为'ListView.java'和\\ 2为'1727'。
有帮助吗?
如果我只给您一个正常的正则表达式,就不确定您是否真的会学到什么,但是这里您可以:
at [^\.]+\.[^\.]+\.([^\.]+)\((.+):(\d+)\)
或更简单一些:
at \w+\.\w+\.(\w+)\((\w+\.\w+):(\d+)\)
我用了
.*\..*\.(\w+)\((\w+\.\w+):(\d+)\)
我将使其更加通用,即
/at ([\w.]+)\(([^:]+):(\d+))
内存捕获为:
我参加聚会有点晚了,但是使用此模式,您可以单击继续:
([\w]+).([\w]+\.[\w]+):([\d]+)
( //First group
[\w] //Match a single character
+ //Between 1 and x times
) //End of first group
. //any character (\W works too, \( unfortunately not)
( //2nd Capturing group ([\w]+\.[\w]+)
[\w] //Match a single character
+ //Between 1 and x times
\. //The literal . char
[\w] //Match a single character
+ //Between 1 and x times
) //end of 2nd group
: // Match colon char
( //Start of 3rd group
[\d] //Match any digits
+ // one or more times
) //End of third group
可能会有更清洁的选项,但这是regexone.com接受的一种方式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.