Java 当正则表达式的第一个字符为*
我有一段Java代码:Java 当正则表达式的第一个字符为*,java,regex,Java,Regex,我有一段Java代码: Pattern p = Pattern.compile("* bar"); Matcher m = p.matcher("foo bar"); System.out.println(m.find()); 但是,当我运行它时,会出现以下错误: 线程“main”java.util.regex.PatternSyntaxException中出现异常:在索引0附近挂起元字符“*” *酒吧 ^ 不知道为什么会发生这种情况,就像我用Pattern p=Pattern.compile
Pattern p = Pattern.compile("* bar");
Matcher m = p.matcher("foo bar");
System.out.println(m.find());
但是,当我运行它时,会出现以下错误:
线程“main”java.util.regex.PatternSyntaxException中出现异常:在索引0附近挂起元字符“*”
*酒吧
^
不知道为什么会发生这种情况,就像我用Pattern p=Pattern.compile(“foo*”)替换Pattern p=Pattern.compile(“foo*”)时那样
一切都按预期工作,控制台输出true。*
在正则表达式中有一个重复次数为零或更多的值(例如,aka空字符串、x
、xx
等都将由x*
匹配)
在开始时,正则表达式引擎不知道要重复什么,因此会出现错误。在第二个示例中,您说的是foo
,后跟零个或多个空格
如果你想匹配一个文本*
,你必须对它进行转义-\*
*
在正则表达式中有一个重复零次或多次的字符串(例如,也就是空字符串,x
,xx
等等都将由x*
匹配)
在开始时,正则表达式引擎不知道要重复什么,因此会出现错误。在第二个示例中,您说的是foo
,后跟零个或多个空格
如果你想匹配一个文本*
,你必须对它进行转义-\*
*
在正则表达式中有一个重复零次或多次的字符串(例如,也就是空字符串,x
,xx
等等都将由x*
匹配)
在开始时,正则表达式引擎不知道要重复什么,因此会出现错误。在第二个示例中,您说的是foo
,后跟零个或多个空格
如果你想匹配一个文本*
,你必须对它进行转义-\*
*
在正则表达式中有一个重复零次或多次的字符串(例如,也就是空字符串,x
,xx
等等都将由x*
匹配)
在开始时,正则表达式引擎不知道要重复什么,因此会出现错误。在第二个示例中,您说的是foo
,后跟零个或多个空格
如果要匹配文本*
,则必须对其进行转义-\\*
*
在正则表达式中表示前面符号的零次或多次重复。由于未指定任何前面的符号,因此会出现错误。您可以使用
表示任何字符。因此,对于您的用例,您可以将您的正则表达式写成*bar
*
,在正则表达式中,表示前面符号的重复次数为零或更多。由于未指定任何前面的符号,因此会出现错误。您可以使用
表示任何字符。因此,对于您的用例,您可以将您的正则表达式写成*bar
*
,在正则表达式中,表示前面符号的重复次数为零或更多。由于未指定任何前面的符号,因此会出现错误。您可以使用
表示任何字符。因此,对于您的用例,您可以将您的正则表达式写成*bar
*
,在正则表达式中,表示前面符号的重复次数为零或更多。由于未指定任何前面的符号,因此会出现错误。您可以使用
表示任何字符。因此,对于您的用例,您可以将正则表达式编写为*bar
@bowTI,您可以使用bar$
$
是行尾的锚点。@bowTI,另外,如果您想使整个字符串与其匹配,可以使用*bar$
。您也可以引用。@bowTI,您可以使用bar$
$
是行尾的锚点。@bowTI,另外,如果您想使整个字符串与其匹配,可以使用*bar$
。您也可以引用。@bowTI,您可以使用bar$
$
是行尾的锚点。@bowTI,另外,如果您想使整个字符串与其匹配,可以使用*bar$
。您也可以引用。@bowTI,您可以使用bar$
$
是行尾的锚点。@此外,如果要使整个字符串与其匹配,可以使用*bar$
。也可以引用。