因此,我有以下Java代码段:

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


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


  线程“主”中的异常java.util.regex.PatternSyntaxException:在索引0附近悬挂元字符'*'
  *酒吧
  ^


不确定为什么会发生这种情况,就像我将Pattern p = Pattern.compile("* bar")替换为Pattern p = Pattern.compile("foo *")时一样
一切都按预期工作,并且控制台输出为true。

最佳答案

正则表达式中的*具有special meaning重复零次或多次(例如,空字符串,xxx等都将由x*匹配)。

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

如果要匹配文字*,则必须对其进行转义-\\*

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

10-15 11:47