正则表达式的关键是
创建用于"在源字符串中匹配出某些字符串"的表达式(字符串)(regex)
源字符串String input = "abcdefg";
表达式String regex = "d.*";
1.正则表达式的字符结构:
1.1 x: 匹配x这个字符
1.2 \\: 匹配反斜杠\
1.3 \t, \n, \r, \e 分别匹配tab健, newline键, 回车键, 回格键
2.正则表达式的字符类结构(匹配单个字符)
2.1 [abc]: 匹配a,b 或者c
2.2 [^abc]: 匹配除了a,b,c的其他字符
2.3 [a-zA-Z]: 匹配从a到z,或A到Z的字符
2.4 [a-d[m-p]]: 匹配a到d,或m到p的字符
2.5 [a-z&&[def]]: (交集)匹配d,e或f
2.6 [a-z&&[^bc]]: (子集)匹配a到z,除了b,c
2.7 [a-z&&[^m-p]]: 类似(2.6)
3.预定义的特殊字符类(匹配单个字符)
3.1 . (顿号)匹配任意字符,可包括或不包括换行符(由dotall模式决定)
3.2 \d 匹配一个数字,相当于[0-9]
3.3 \D 匹配不是数字的一个字符, 相当于[^0-9]
3.4 \s 匹配一个空格,相当于[ \t\n\x0B\f\r]
3.5 \S 相当于[^\s]
3.6 \w 匹配一个单词字符, 相当于[a-zA-Z_0-9]
3.7 \W 相当于[^\w]
4.边界匹配
4.1 ^ 行首
4.2 $ 行尾
4.3 \b 字符边界
4.4 \B 不是字符边界
4.5 \A The beginning of the input
4.6 \G The end of the previous match
4.7 \Z The end of the input but for the final terminator, if any
4.8 \z The end of the input
5.贪婪量词
5.1 X? 一次或0次
5.2 X* 0次或多次
5.3 X+ 一次以上
5.4 X{n} n次
5.5 X{n,} n次以上
5.6 X{n,m} n到m次
6.懒惰量词
相应地在贪婪量词后加上?号
如 X??, X{n,}?
7.逻辑操作
7.1 XY X followed by Y
7.2 X|Y Either X or Y
7.3 (X) X, as a capturing group
Back references
\n Whatever the nth capturing group matched
(?:X) X, as a non-capturing group
8.Backslashes, escapes, and quoting
用于escapes的反斜杠\在java的字符串解析中有特殊含义(也作为内部的escapse)
所以要使正则表达式中的"\"留下, 还需要再加一个\
例如: Pattern.compile("\\s.+\\*");
注:如果正则表达式字符串中包含特殊字符,需要使用\转义
如 . * ( ) { } | ? + ^ $ \ - ,
9.Line terminators(换行符)
9.1 A newline (line feed) character ('\n'),
9.2 A carriage-return character followed immediately by a newline character ("\r\n"),
9.3 A standalone carriage-return character ('\r'),
默认情况下, 正则表达式^ $会忽略换行符, 只匹配源字符串的首和尾(边界).
所以正则表达式"^.*$"并不能匹配多行的文本text, 因为默认情况下(.)不匹配换行符,
使用dotall模式"(?s)^.*$"就可以匹配全文本了.
但是如果启用多行模式(multiline)(?m)
^匹配整个源字符串首和每个换行符后面(除了源字符串最后那个),
$则匹配每个换行符前和整个源字符串尾.
例如 "(?m)^\\s*//.*$" 匹配每行的注释//...
[b]10.java相关的正则表达式
Pattern表示正则表达式对象.
Mather表示匹配结果
String sourceInput = "i'am text..\n\t你好...城ssllk";
Pattern p = Pattern.compile("(?m)^\\s*//.*$");
Mather m = p.mather(sourceInput);
//Mather主要的方法
m.find();
m.group(int);
m.matches();
//字符串相关的正则表达式
sourceInput.replaceAll(regex,replace);
//相当于
Pattern.compile(regex).mather(sourceInput).replaceAll(replace);
sourceInput.replaceAll("^(.*)/.*$","$1");
分享到:
相关推荐
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...
Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...
Java正则表达式验证IP地址 Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在...
Java正则表达式是编程语言Java中的一个强大工具,它用于模式匹配、数据验证和文本检索替换。在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在...
本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...
以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,包括元字符、字符类、量词和分组。元字符如`.`代表任意字符,`^`表示行首,`$`...