public static void main(String[] args) {
String text1 = "127.0.0.1 - - [05/Nov/2015:15:06:34 +0800] \"GET /accounts/accountIds/54d9c155e4b0abe717853ee1,55bb3f44e4b059498d77ae86,54dab42de4b07ae8cd725287,561ca2a6e4b08acc10be9a71 HTTP/1.1\" 200 2426 \"-\" \"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36\" 0.012 0.012 \"192.168.222.251\"";
String text2 = "127.0.0.1 - - [05/Nov/2015:15:24:40 +0800] \"GET /accounts/54fd0571e4b055a0030461fb HTTP/1.1\" 200 814 \"-\" \"Mozilla/5.0 (Linux; U; Android 4.4.2; zh-CN; HUAWEI P7-L07 Build/HuaweiP7-L07) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.8.0.654 U3/0.8.0 Mobile Safari/534.30\" 0.005 0.005 \"192.168.222.35\"";
String text3 = "127.0.0.1 - - [05/Nov/2015:15:24:40 +0800] \"GET /favicon.ico HTTP/1.1\" 404 992 \"-\" \"Mozilla/5.0 (Linux; U; Android 4.4.2; zh-CN; HUAWEI P7-L07 Build/HuaweiP7-L07) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.8.0.654 U3/0.8.0 Mobile Safari/534.30\" 0.040 0.040 \"192.168.222.35\"";
String text4 = "127.0.0.1 - - [05/Nov/2015:23:55:11 +0800] \"POST /wechat/wx6559dc399869bc69?signature=52205b5eb43b04d686ab6722f819e6e051d2c7b0×tamp=1446738911&nonce=1501185542&encrypt_type=aes&msg_signature=9247d3d7cd562f862f9a7111f413f37cdca5c872 HTTP/1.1\" 200 298 \"-\" \"Mozilla/4.0\" 0.019 0.019 \"101.226.62.82\"";
Pattern p = Pattern.compile(
"^([\\d.]+) (\\S+) (\\S+) \\[(.+)\\] \"(GET|POST|DELETE|PUT|HEAD) (\\S+) (\\S+)\" (\\d+) (\\d+) \"(\\S+)\" \"(.+)\" (\\S+) (\\S+) \"([\\d.]+)\"");
List<String> lines = new ArrayList<String>();
lines.add(text1);
lines.add(text2);
lines.add(text3);
lines.add(text4);
for (String line : lines) {
System.out.println("****************************************");
Matcher matcher = p.matcher(line);
if (matcher.find()) {
System.out.print(matcher.group(4) + " ");
System.out.print(matcher.group(5) + " ");
System.out.print(matcher.group(6) + " ");
System.out.print(matcher.group(8) + " ");
System.out.println(matcher.group(14));
}
}
}
结果:
****************************************
05/Nov/2015:15:06:34 +0800 GET /accounts/accountIds/54d9c155e4b0abe717853ee1,55bb3f44e4b059498d77ae86,54dab42de4b07ae8cd725287,561ca2a6e4b08acc10be9a71 200 192.168.222.251
****************************************
05/Nov/2015:15:24:40 +0800 GET /accounts/54fd0571e4b055a0030461fb 200 192.168.222.35
****************************************
05/Nov/2015:15:24:40 +0800 GET /favicon.ico 404 192.168.222.35
****************************************
05/Nov/2015:23:55:11 +0800 POST /wechat/wx6559dc399869bc69?signature=52205b5eb43b04d686ab6722f819e6e051d2c7b0×tamp=1446738911&nonce=1501185542&encrypt_type=aes&msg_signature=9247d3d7cd562f862f9a7111f413f37cdca5c872 200 101.226.62.82
分享到:
相关推荐
本文介绍了如何使用Java中的`split()`方法和正则表达式来处理包含全角空格和半角空格的字符串。通过合理运用正则表达式和Java内置方法,我们可以有效地解决这类问题。希望本文能够对你有所帮助!
Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...
《VB字符串和正则表达式参考手册》是一本专注于Visual Basic(VB)编程语言中字符串操作和正则表达式使用的专业指南。VB是Microsoft开发的一种编程环境,广泛应用于Windows应用程序的开发,而字符串处理和正则表达式...
根据给定的文件信息,我们可以总结出以下关于Java正则表达式的重要知识点: ### 1. 正则表达式简介 正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换等操作符合某种规则的字符串。在Java中,...
接着,定义了一个名为`SocialSecurityNumberValidator`的类,在主方法中使用`Pattern.compile`编译正则表达式,并使用`matcher.matches`来检查字符串是否与给定的模式匹配。 通过上述知识点的学习,读者可以了解到...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它通过预定义的模式来识别和操作字符串中的数据。以下是一些常见的正则表达式及其用途: 1. 匹配中文字符:`[u4e00-u9fa5]` - 这个正则...
### 去空格正则表达式 #### 概述 在编程中,经常会遇到需要去除字符串中的空格的情况,特别是在处理XML、JSON等格式的数据时尤为重要。通过使用正则表达式来去除字符串中的空格是一种高效且常用的方法。本文将详细...
在Java中,正则表达式提供了简洁而灵活的方式来处理字符串,使得编程人员能够以更高效的方式实现各种文本操作。 正则表达式的起源可以追溯到20世纪中叶,由Warren McCulloch和Walter Pitts的神经网络理论,以及...
在这个过程中,正则表达式作为一种强大的文本处理工具,其作用不可小觑。 首先,需要了解正则表达式的基础知识。正则表达式是由一系列特殊字符和普通字符组合而成的,用于匹配字符串的某些模式。在JavaScript中,...
这个库不仅包含了标准Java API中的`java.util.regex`包,还可能包含了一些第三方库,如`automaton-1.11-7`,这可能是对Java正则表达式功能的一种扩展或优化。 正则表达式的语法是相当丰富的,包括字符类(如`\d`...
Java中的正则表达式是处理字符串的强大工具,它允许我们以一种简洁的方式匹配、查找、替换和解析文本。正则表达式(Regular Expression)是一种模式匹配语言,它由特殊字符和普通字符组成,用于定义一个搜索模式。在...
### LabVIEW中常用的字符串匹配符及正则表达式 #### 引言 在现代软件开发中,特别是涉及数据处理的应用程序设计中,字符串操作是非常重要的一个环节。LabVIEW作为一种广泛应用于工程领域的图形化编程环境,提供了...
在编程领域,VB.Net是一种基于.NET Framework的编程语言,它为开发者提供了丰富的功能,包括对字符串操作和正则表达式的支持。本参考手册将深入探讨这两个关键概念,并提供实用的示例来帮助理解和应用。 一、VB.Net...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。本教程将深入讲解Java中的正则表达式,并提供丰富的实例来帮助开发者理解和应用这些概念。 1. 正则...
** 正则表达式(Regular Expression)是一种用来定义字符串模式的语言,用于在文本中查找、替换和分割字符串。 - **优点**:使用正则表达式可以以简洁的代码完成复杂的字符串处理任务,提高代码效率。 - **缺点**...
Java中的正则表达式是一个强大的文本处理工具,它允许程序员进行复杂的字符串匹配、查找、替换和分割操作。在Java中,正则表达式是通过`java.util.regex`包来实现的,这个包提供了一系列类,如`Pattern`、`Matcher`...
在Java中,你可以使用`matches()`方法来检查一个字符串是否完全符合某个正则表达式模式,`split()`方法将字符串根据正则表达式分割成多个子字符串,以及`replaceAll()`方法替换字符串中符合正则表达式的部分。...
以上示例代码均演示了如何使用正则表达式检查一个字符串是否仅包含中文、数字、字母和下划线。 #### 五、总结 通过本文的介绍,我们可以了解到正则表达式是处理文本的强大工具之一。对于特定的需求,比如本例中的...
在这个例子中,正则表达式`\\d{3}-\\d{2}-\\d{4}`匹配形如"123-12-1234"的字符串。注意在Java中,正则表达式的特殊字符需要使用双反斜杠(`\\`)进行转义。 通过熟练掌握正则表达式,Java开发者可以更高效地处理...