java中,Pattern.matches("\\d+","2223");返回的是true。
Pattern.matches("\\d+","2223");
如果Pattern.matches("\d+",匹配的又是什么呢?比如换行符"\n"要匹配的时候,难道也要像上面那样写成"\\n"才能匹配成换行符?那re中"\n"匹配的又是什么呢?
Pattern.matches("\d+",
"\n"
"\\n"
光阴似箭催人老,日月如移越少年。
d試試看就知道報錯了: error: illegal escape character
d
+:表示大於一次的匹配d+匹配 d+匹配 d,...,ddd,...,ddd,...之類的東西
d+
ddd
以前我沒注意過這問題, 然後找了一些資料 原來的理解我也有問題 剛才回答有不全的地方
應該是\n 或n兩個都可以
\n
n
第一種是直接變成正規裡的n被正規引擎處理n被正则引擎处理第二种是n被Java直接转化为一个newline character就是'u000A'第二種是n被Java直接轉換成一個newline character就是'u000A '當然正規也能配對了
'u000A'
'u000A '
最後一個問題要match 字面量的"\"+"n""\"+"n"可以在编译正则的时候用Pattern.LITERAL 那样正则引擎就会把n当成和n可以在編譯正則的時候用Pattern.LITERAL 那樣正則引擎就會把n當成和n,而不認為是匹配newline字元當然應該是用第一種方法
"\"
"n"
Pattern.LITERAL
Pattern.compile("\n", Pattern.LITERAL );
因為你的語言沒有正規這種類型,只能用字串表示,所以要多轉義一次。 \n 是正则的 n 匹配换行,n 是字串換,直接匹配換行當然也是對的
d
試試看就知道報錯了:error: illegal escape character
+:表示大於一次的匹配
d+
匹配d+
匹配d
,...,ddd
,...,ddd
,...之類的東西以前我沒注意過這問題, 然後找了一些資料 原來的理解我也有問題 剛才回答有不全的地方
應該是
\n
或n
兩個都可以第一種是直接變成正規裡的
n
被正規引擎處理n
被正则引擎处理第二种是
n
被Java直接转化为一个newline character就是'u000A'
第二種是n
被Java直接轉換成一個newline character就是'u000A '
當然正規也能配對了最後一個問題要match 字面量的
"\"
+"n"
"\"
+"n"
可以在编译正则的时候用
Pattern.LITERAL
那样正则引擎就会把n
当成和
n
可以在編譯正則的時候用Pattern.LITERAL
那樣正則引擎就會把n
當成和
n
,而不認為是匹配newline字元當然應該是用第一種方法
因為你的語言沒有正規這種類型,只能用字串表示,所以要多轉義一次。
\n
是正则的 n 匹配换行,n
是字串換,直接匹配換行當然也是對的