gpt4 book ai didi

当正则表达式的第一个字符是 * 时,Java PatternSyntaxException

转载 作者:行者123 更新时间:2023-12-01 22:08:14 26 4
gpt4 key购买 nike

所以我有这段 Java 代码:

Pattern p = Pattern.compile("* bar");
Matcher m = p.matcher("foo bar");
System.out.println(m.find());

但是,当我运行它时,出现以下错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 * bar ^

不知道为什么会发生这种情况,因为当我用 Pattern p = Pattern.compile("foo *") 替换 Pattern p = Pattern.compile("* bar") 时会发生这种情况一切都按预期工作,控制台输出 true。

最佳答案

正则表达式中的

* 具有 special meaning 重复零次或多次(又名空字符串xxx等都将被匹配例如 x*)。

当它开始时,正则表达式引擎不知道要重复什么,因此会出现错误。在第二个示例中,您说的是 foo,后跟零个或多个空格

如果你想匹配文字*,你必须转义它 - \\*

关于当正则表达式的第一个字符是 * 时,Java PatternSyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32291713/

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