java中re正则表达式的一个疑惑
大家讲道理
大家讲道理 2017-04-18 09:31:00
0
2
404

java中,Pattern.matches("\\d+","2223");返回的是true。

如果Pattern.matches("\d+",匹配的又是什么呢?
比如换行符"\n"要匹配的时候,难道也要像上面那样写成"\\n"才能匹配成换行符?那re中"\n"匹配的又是什么呢?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(2)
阿神

d試試看就知道報錯了:
error: illegal escape character


+:表示大於一次的匹配
d+匹配 d+匹配 d,...,ddd,...,ddd,...之類的東西


以前我沒注意過這問題, 然後找了一些資料 原來的理解我也有問題 剛才回答有不全的地方

應該是\nn兩個都可以

第一種是直接變成正規裡的n被正規引擎處理n被正则引擎处理
第二种是n被Java直接转化为一个newline character就是'u000A'第二種是n被Java直接轉換成一個newline character就是'u000A '當然正規也能配對了


最後一個問題要match 字面量的"\"+"n""\"+"n"
可以在编译正则的时候用Pattern.LITERAL 那样正则引擎就会把n当成n可以在編譯正則的時候用Pattern.LITERAL 那樣正則引擎就會把n當成n,而不認為是匹配newline字元
當然應該是用第一種方法

Pattern.compile("\n", Pattern.LITERAL );
左手右手慢动作

因為你的語言沒有正規這種類型,只能用字串表示,所以要多轉義一次。
\n 是正则的 n 匹配换行,n 是字串換,直接匹配換行當然也是對的

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板