我无法在Java上运行这个正则表达式:
String regex = "/^{m:\"(.*)\",s:([0-9]{1,15}),r:([0-9]{1,15}),t:([0-9]{1,2})}$/";
String data = "{m:\"texttexttext\",s:1231,r:23123,t:1}";
Pattern p = Pattern.compile(regex_Write_clientToServer);
Matcher a = p.matcher(data);
这与正则表达式网站的测试人员相同的正则表达式和相同的数据(如http://gskinner.com/RegExr/)工作正常!
答案 0 :(得分:4)
两个问题:
/
个字符中{
文字:试试这个:
String regex = "^\\{m:\"(.*)\",s:([0-9]{1,15}),r:([0-9]{1,15}),t:([0-9]{1,2})\\}$";
答案 1 :(得分:3)
有两个问题:
Pattern.compile
中得到了一个例外。试试这个:
String regex="^\\{m:\"(.*)\",s:([0-9]{1,15}),r:([0-9]{1,15}),t:([0-9]{1,2})\\}$";
(适用于您的样本数据。)
顺便说一句,如果这是为了解析JSON,我个人不尝试使用正则表达式 - 使用真正的JSON解析器。从长远来看,它会更加灵活。
答案 2 :(得分:0)
两件事: Java不要求你有任何类型的开始/结束字符。所以你可以删除/ chars
此外,如果要匹配它们,Java要求您转义任何正则表达式元字符。在你的情况下,大括号字符'{'和'}'需要在前面加一个双反斜杠(一个用于java转义,一个用于正则表达式转义):
"^\\{m:\"(.*)\",s:([0-9]{1,15}),r:([0-9]{1,15}),t:([0-9]{1,2})\\}$"