Java 正则表达式 line.split("\\s*//")
Java regex line.split("\\s*//")
我遇到了以下字符串拆分 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
我想知道“/”到底对正则表达式有什么作用,并且想知道是否有人可以向我指出一些文档and/or一个强调它的作用的答案?
我还注意到,当我从正则表达式中删除“//”时,输出仅更改为第一个字符,我认为这是有道理的,因为 \s* 意味着表达式吐出零个或多个白色space 个字符。
This is the line: t
然而,这提出了问题:"what does the '//' add to the regular expression that sees the split occur at the end of the line"?
如有任何建议,我们将不胜感激。
Z
考虑您的输入文本 (type=rule.composition id=ruleComp
) 和您的两个正则表达式:
- 正则表达式 1:
\s*//
;
- 正则表达式 2:
\s*
.
当您针对正则表达式尝试 .split()
时,正则表达式引擎将尝试匹配正则表达式(它是根据作为参数的文本文字计算得出的),并且可能会发生以下两种情况:
- 正则表达式无法匹配任何内容(这就是正则表达式 1 发生的情况):拆分实际上无法运行,第 0 个元素是输入文本;
- 正则表达式可以匹配一个空字符串(这就是正则表达式 2 发生的情况):在这种情况下,正则表达式引擎会注意到这一点并且不能让这种情况继续下去,否则会导致无限循环。所以强行进一记再继续。
因此您的结果:
- 对于第一个正则表达式,没有任何匹配项;
- 对于第二个正则表达式,匹配一个空字符串;正则表达式引擎选择移动一个字符并将 "discarded" 文本(前一个标记)视为第 0 个匹配项。
我遇到了以下字符串拆分 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
我想知道“/”到底对正则表达式有什么作用,并且想知道是否有人可以向我指出一些文档and/or一个强调它的作用的答案?
我还注意到,当我从正则表达式中删除“//”时,输出仅更改为第一个字符,我认为这是有道理的,因为 \s* 意味着表达式吐出零个或多个白色space 个字符。
This is the line: t
然而,这提出了问题:"what does the '//' add to the regular expression that sees the split occur at the end of the line"?
如有任何建议,我们将不胜感激。
Z
考虑您的输入文本 (type=rule.composition id=ruleComp
) 和您的两个正则表达式:
- 正则表达式 1:
\s*//
; - 正则表达式 2:
\s*
.
当您针对正则表达式尝试 .split()
时,正则表达式引擎将尝试匹配正则表达式(它是根据作为参数的文本文字计算得出的),并且可能会发生以下两种情况:
- 正则表达式无法匹配任何内容(这就是正则表达式 1 发生的情况):拆分实际上无法运行,第 0 个元素是输入文本;
- 正则表达式可以匹配一个空字符串(这就是正则表达式 2 发生的情况):在这种情况下,正则表达式引擎会注意到这一点并且不能让这种情况继续下去,否则会导致无限循环。所以强行进一记再继续。
因此您的结果:
- 对于第一个正则表达式,没有任何匹配项;
- 对于第二个正则表达式,匹配一个空字符串;正则表达式引擎选择移动一个字符并将 "discarded" 文本(前一个标记)视为第 0 个匹配项。