V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjn17858906105
V2EX  ›  Java

Java 正则的一个问题

  •  
  •   xjn17858906105 · 2019-10-27 16:01:38 +08:00 · 3030 次点击
    这是一个创建于 974 天前的主题,其中的信息可能已经有所发展或是发生改变。

    String str = "3\r123u99"; String reg = ".\r.";

    Matcher m1 = Pattern.compile(reg).matcher(str); while (m1.find()) { System.out.println(m1.group()); }

    刚接触正则,这段正则的匹配结果让我不解啊

    10 条回复    2019-10-28 09:18:03 +08:00
    dallaslu
        1
    dallaslu  
       2019-10-27 16:11:53 +08:00
    那么匹配结果是什么,以及你觉得应该是什么呢?
    xjn17858906105
        2
    xjn17858906105  
    OP
       2019-10-27 16:27:18 +08:00
    @dallaslu 我觉得应该是
    ************
    3

    1
    ************
    可是输出的结果是
    ************
    1
    ************
    chengyiqun
        3
    chengyiqun  
       2019-10-27 16:50:57 +08:00
    你是在 windows 平台测试的吗?
    xjn17858906105
        4
    xjn17858906105  
    OP
       2019-10-27 16:51:51 +08:00
    @chengyiqun 我是在 mac 上测试的,用 idea,在控制台上打印
    xjn17858906105
        5
    xjn17858906105  
    OP
       2019-10-27 16:53:08 +08:00
    刚刚 stackoverflow 上的老兄是这么回答的 https://stackoverflow.com/a/58577737/8432118
    QiuSe
        6
    QiuSe  
       2019-10-27 17:26:50 +08:00   ❤️ 1
    @xjn17858906105 这个解释不是很好吗?
    如果你想输出你要的结果,String str = "3\n123u99"; String reg = ".\n.";就是你要的。
    想知道为什么\r 不行, 你只需要在 main 方法里写 System.out.println("ww3\r123u99"),不写其他的代码,这个是控制台的规定吧。
    ipwx
        7
    ipwx  
       2019-10-27 18:11:50 +08:00 via Android
    因为控制台里面 \r 等于回到行首重新开始输出啊。不信你 replace \r 为 \\r
    szq8014
        8
    szq8014  
       2019-10-27 19:22:19 +08:00   ❤️ 3
    你遇到了著名的文件换行符问题。
    \r\n 分别是把光标挪到行首与换行。
    只写\r 就只是把兴标挪到了行首,输出的字符会覆盖原来的,用这个特性可以做控制台的基于字符的下载进度条。
    按照标准来的话,只写 \n 效果应该是
    12345
    _____67890
    这样的,不过不会这样的
    m1ch3ng
        9
    m1ch3ng  
       2019-10-27 22:56:17 +08:00
    匹配的是 3\r1,然后因为是 syso 输出,遇到\r 会光标移到行首,所以输出 1 ?
    xjn17858906105
        10
    xjn17858906105  
    OP
       2019-10-28 09:18:03 +08:00 via Android
    @m1ch3ng 是的,我试验过了,也确实如此
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1107 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:06 · PVG 05:06 · LAX 14:06 · JFK 17:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.