gpt4 book ai didi

Java正则表达式line.split ("\\s*//")

转载 作者:行者123 更新时间:2023-11-30 02:45:28 24 4
gpt4 key购买 nike

我遇到了以下字符串分割 line.split("\s*//")[0] 但似乎找不到有关在常规中使用“/”字符的文档表达式。

这是我的代码:

String line = "type=path.composition id=pathComp";
line = line.split("\\s*//")[0];

Console console = System.console();
System.out.println("This is the line: " + line);

这里是输出:

This is the line: type=rule.composition id=ruleComp

我想知道“/”对正则表达式到底有什么作用,并且想知道是否有人能够向我指出一些文档和/或强调它的作用的答案?

我还注意到,当我从正则表达式中删除“//”时,输出仅更改为第一个字符,我认为这是有意义的,因为\s* 意味着表达式吐出零个或多个空白字符。

This is the line: t

然而,这提出了一个问题:“‘//’添加到正则表达式中以看到分割发生在行尾”?

如有任何建议,我们将不胜感激。

Z

最佳答案

考虑您的输入文本 (type=rule.composition id=ruleComp) 和您的两个正则表达式:

  • 正则表达式 1:\s*//;
  • 正则表达式 2:\s*

当您尝试使用 .split() 对抗正则表达式时,正则表达式引擎将尝试匹配正则表达式(从文本文字作为参数计算得出),这两件事可以发生:

  • 正则表达式无法匹配任何内容(这就是正则表达式 1 发生的情况):分割实际上无法操作,第 0 个元素是输入文本;
  • 正则表达式可以匹配空字符串(这就是正则表达式 2 发生的情况):在这种情况下,正则表达式引擎注意到这一点并且不能让这种情况继续下去,因为否则会导致无限循环。因此,它会在继续之前强行前进 1 个 token 。

因此你的结果:

  • 使用第一个正则表达式时,没有任何内容匹配;
  • 使用第二个正则表达式,匹配空字符串;正则表达式引擎选择移动一个字符并将“丢弃”文本(前一个标记)视为第 0 个匹配。

关于Java正则表达式line.split ("\\s*//"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40314626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com