所以我有这段Java代码:
var Item = Parse.Object.extend("user");
$("#saveNewBudgetAmount").click(function(){
var newBudget = $("#newBudgetSum").val();
var currentUser = Parse.User.current();
var newItem = new Item();
var query = new Parse.Query(Item);
newItem.set("budget",newBudget);
query.equalTo("user", currentUser);
newItem.save(null, {
success: function() {
location="MainPage.html";
},
error: function(user, error) {
alert("Error: " + error.code + " " + error.message);
}
});
然而,当我运行它时,我收到以下错误:
线程“main”中的异常java.util.regex.PatternSyntaxException:在索引0附近悬挂元字符'*' *酒吧 ^
我不知道为什么会发生这种情况,因为我将Pattern p = Pattern.compile("* bar");
Matcher m = p.matcher("foo bar");
System.out.println(m.find());
替换为Pattern p = Pattern.compile("* bar")
一切都按预期工作,控制台输出为真。
答案 0 :(得分:2)
*
有<{3}} 重复零次或多次(又名空字符串,x
,{{ 1}}等等都将由xx
匹配。例如)。
当它在开始时,正则表达式引擎不知道要重复什么,因此错误。在第二个示例中,您说的是 x*
,后跟零个或多个空格。
如果你想匹配文字foo
,你必须逃避它 - *
。
答案 1 :(得分:1)
*
表示前一个符号重复零次或多次。由于您未指定任何前面的符号,因此会出现错误。您可以使用.
表示任何字符。因此,对于您的用例,您可以将正则表达式编写为.* bar
。