搜索

首页  >  问答  >  正文

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

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

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

大家讲道理大家讲道理2902 天前416

全部回复(2)我来回复

  • 阿神

    阿神2017-04-18 09:33:00

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


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


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

    应该是\nn两个都可以

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


    最后一个问题 要match 字面量的"\"+"n"
    可以在编译正则的时候用Pattern.LITERAL 那样正则引擎就会把n当成n error: illegal escape character


    +:表示大于一次的匹配🎜d+匹配 d,...,ddd,...之类的东西🎜
    🎜以前我没注意过这问题, 然后找了一些资料 原来的理解我也有问题 刚才回答有不全的地方🎜 🎜应该是\nn两个都可以🎜 🎜第一种是直接 变成正则里的n被正则引擎处理🎜第二种是n被Java直接转化为一个newline character就是'u000A'当然正则也能匹配了🎜
    🎜最后一个问题 要match 字面量的"\"+"n"🎜可以在编译正则的时候用Pattern.LITERAL 那样正则引擎就会把n当成n,而不认为是匹配newline字符🎜当然应该是用第一种方法🎜
    Pattern.compile("\n", Pattern.LITERAL );

    回复
    0
  • ringa_lee

    ringa_lee2017-04-18 09:33:00

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

    回复
    0
  • 取消回复