【发布时间】:2015-05-26 17:52:22
【问题描述】:
我有一些这样的日志文件文本:
21.125.155.111 - - [01/Jan/2012:12:07:48 +0530] "GET /digital-cameras/digital-camera/sony-qx-dsc-qx100-point-shoot-digital-camera-black.html HTTP/1.1" 200 1470 "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17" "-"
我的模式是:
"(?<ip>[\\d\\.]+)(.+)\\\"(?<verb>\\w+) (?<address>.+) (?<protocol>[HTTPS]+)/(?<version>.+?)\\\"\\s(?<status>\\d+)\\s(?<time>\\d+)\\s\\\"(?<useragent>.*)\\\"\\s(.*)"
但是当我尝试编译模式时,我得到了上述 PatternSyntaxException。
它在 C# 中完美运行,但在 Java 1.6 中出现异常。
【问题讨论】:
-
看看java和c#中使用的regex模式的区别:stackoverflow.com/questions/538579/…
-
public class testerclass { private static final String pat = "(?
[\\d\\.]+)(.+)\\\"(? \\w+ ) (?.+) (?[HTTPS]+)/(?.+?)\\\"\\s(?\\d+)\\s(? \\d+)\\s\\\"(?.*)\\\"\\s(.*)"; public static void main(String[] args) { Pattern p = Pattern.compile(pat);} -
@Pranati 正则表达式的目的是什么?只是为了匹配日志还是为了捞出一些数据?