这是我的代码,它适用于-
但不适用于^
,我知道原因,但我不知道解决方案。
此代码有效,并为我提供“here”:
String patternString = "(.*)--(.*)";
Pattern r = Pattern.compile(patternString);
Matcher m = r.matcher("here--asdfasdfasdfasdfasdfasdfasfd");
此代码不给我“here”:
String patternString = "(.*)^^(.*)";
Pattern r = Pattern.compile(patternString);
Matcher m = r.matcher("here^^asdfasdfasdfasdfasdfasdfasfd");
答案 0 :(得分:2)
将^
替换为\\^
,这是一个代表行首的特殊符号,因为MULTILINE修饰符未启用。此类符号(\.[]{}()*+-?^$|
)必须在\\
之前进行转义。
答案 1 :(得分:2)
您需要转义两个^
个字符(或将它们分组),它们是正则表达式中的特殊字符。当我改变你的第二个例子时,
String patternString = "(.*)\\^\\^(.*)";
或喜欢
String patternString = "(.*)\\^{2}(.*)";
我得到你的(预期的)here
。