为了账号安全,请及时绑定邮箱和手机立即绑定

java中re正则表达式的一个疑惑

java中re正则表达式的一个疑惑

互换的青春 2019-03-13 22:19:57
java中,Pattern.matches("\\d+","2223");返回的是true。如果Pattern.matches("\d+",匹配的又是什么呢?比如换行符"\n"要匹配的时候,难道也要像上面那样写成"\\n"才能匹配成换行符?那re中"\n"匹配的又是什么呢?
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

\d试一下就知道了报错:
error: illegal escape character


+:表示大于一次的匹配
d+匹配 d,...,ddd,...之类的东西


以前我没注意过这问题, 然后找了一些资料 原来的理解我也有问题 刚才回答有不全的地方

应该是\\n 或\n两个都可以

第一种是直接 变成正则里的\n被正则引擎处理
第二种是\n被Java直接转化为一个newline character就是'\u000A'当然正则也能匹配了


最后一个问题 要match 字面量的"\\"+"n"
可以在编译正则的时候用Pattern.LITERAL 那样正则引擎就会把\n当成\n,而不认为是匹配newline字符
当然应该是用第一种方法

Pattern.compile("\\n", Pattern.LITERAL );


查看完整回答
反对 回复 2019-04-22
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

因为你的语言没有正则这种类型,只能用字符串表示,所以要多转义一次。
\\n 是正则的 \n 匹配换行,\n 是字符串换,直接匹配换行当然也是对的

查看完整回答
反对 回复 2019-04-22
  • 2 回答
  • 0 关注
  • 320 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信