单独使用时正则表达式环视如何工作
How regex lookaround works when used alone
public class Test {
public static void main(String[] args){
Pattern a = Pattern.compile("(?=\.)|(?<=\.)");
Matcher b = a.matcher(".");
while (b.find()) System.out.print("+");
}
}
我一直在阅读有关 Regular-Expressions.info 的环视部分,并试图弄清楚它是如何工作的,但我被这个东西困住了。当我 运行 结果上面的代码是 ++ 时,我不明白,因为“。”是匹配模式的唯一标记,显然“.”后面或前面没有任何内容。那么怎么匹配两次呢?
随着正则表达式引擎在输入中前进,它将字符 和 位置 之前和之后 字符视为输入中的不同位置.
您的输入有3个位置:
- 就在第一个字符之前
- 第一个字符
- 就在第一个字符之后
位置 1 匹配 (?=\.)
。
位置 3 匹配 (?<=\.)
.
public class Test {
public static void main(String[] args){
Pattern a = Pattern.compile("(?=\.)|(?<=\.)");
Matcher b = a.matcher(".");
while (b.find()) System.out.print("+");
}
}
我一直在阅读有关 Regular-Expressions.info 的环视部分,并试图弄清楚它是如何工作的,但我被这个东西困住了。当我 运行 结果上面的代码是 ++ 时,我不明白,因为“。”是匹配模式的唯一标记,显然“.”后面或前面没有任何内容。那么怎么匹配两次呢?
随着正则表达式引擎在输入中前进,它将字符 和 位置 之前和之后 字符视为输入中的不同位置.
您的输入有3个位置:
- 就在第一个字符之前
- 第一个字符
- 就在第一个字符之后
位置 1 匹配 (?=\.)
。
位置 3 匹配 (?<=\.)
.