正则式使用小计(基于Java)

前端之家收集整理的这篇文章主要介绍了正则式使用小计(基于Java)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Java正则式使用小计:
使用正则式时一些地方总是容易忘记,这里记一下。
注意是否匹配换行,很多时候都是要的,而Java默认是不匹配的,所以在使用compile的时候注意把参数传进去

Matcher matcher = Pattern.compile("(@.*?|.*?)(#.*?#)",Pattern.DOTALL).
    matcher(originalMeaning);

注意贪婪匹配,比如上面的.*?#匹配abc#def#ddf如果不加上?的话就是贪婪匹配,会匹配所有的字符的得到abc#def#而不是abc#,需要加上?才行

对表达式取或 是这种方式,(rgxa|rgxb),一般的字符用或是[abc];

替换分组,可以保留查找到的分组,替换其余的,比如

String repleceS = "$1" + objItemValue;
matcher.appendReplacement(sbBuffer,repleceS);

会保留文本串中(@.*?|.*?)匹配的部分,而替换其余的

匹配行首^,匹配行尾$

API中提供的方法别忘了:
reset传入新的文本串进行匹配,不用Patter再创建一个对象,效率高
lookingAt 匹配开始部分

规则表:
可以归为两个部分操作运算数 和 运算符, 之所以叫正则表达式,和数学的表达式类似。
运算数 转义符 边界匹配符(当然还有一般字符)
运算符 逻辑运算 数量运算

1、转义符

符号 含义
\ 反斜线字符(反斜杠在语言中本身作为转义符的,得用2根 \ 表示,所以这里要用 \\)
\r 回车符 (‘\u000D’)
\n 新行(换行)符 (‘\u000A’)
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 下划线的任何单词字符:[a-zA-Z0-9_]
\W 非单词字符:[^\w]

3、边界匹配符

符号 含义
    ^
行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

2、运算

符号 含义
[abc] a、b 或 c
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] 到 z 或 A 到 Z, 两头的字母包括在内(并集)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](差集)
X Y
(rgxa rgxb)
(X) X,作为捕获组

4、数量

符号 含义
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

猜你在找的正则表达式相关文章