以下两行代码:
System.out.println(Arrays.toString("test".split("(?<!^)")));
System.out.println(Arrays.toString("test".split("(?!^)")));
Run Code Online (Sandbox Code Playgroud)
每个产生相同的输出:
[t, e, s, t]
Run Code Online (Sandbox Code Playgroud)
我期望生产底线
[, t, e, s, t]
Run Code Online (Sandbox Code Playgroud)
因为它应该愿意在^之前和之后分裂t.有人能指出我的想法是错的吗?
(?!^)匹配任何不在字符串开头的位置,就像(?<!^).由于 ^锚没有任何长度,因此无论您是向前还是向后都无关紧要.
想象一下test像这样的字符串,|表示 字符之间的位置:
| t | e | s | t |
^ matches here ($ matches here)
Run Code Online (Sandbox Code Playgroud)
(?!^)在位置上不匹配,0因为当向前看0个字符时,正则表达式引擎从这里"看到"字符串的开头
(?<!^) 这里不匹配,因为当向后看0个字符时,正则表达式引擎从这里"看到"字符串的开头
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |