加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:38:44 所属栏目:百科 来源:网络整理
导读:Java正则式使用小计: 使用正则式时一些地方总是容易忘记,这里记一下。 注意是否匹配换行 ,很多时候都是要的,而Java默认是不匹配的,所以在使用compile的时候注意把参数传进去 Matcher matcher = Pattern .compile( "(@.*?|.*?)(#.*?#)" , Pattern .DOTAL

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 空白字符:[ tnx0Bfr]
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 次

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读