我在java中编写一个正则表达式,但是在运行程序时遇到错误。
private final static Pattern QUOTE_VALUE = Pattern.compile("[_]?([a-zA-Z0-9_]+)=(\"[^]*\"),");
// Then later on down the road......
Macher m = QUOTE_VALUE.matcher(myString);
while (m.find()){
System.out.println("Found " + m.group(1) + " " + m.group(2));
}
我想让我的正则表达式匹配这些样本值。
_MyKey="ID IN [ "ABC" ]", // Note - it has a comma after the ]
_MyKey="ID IN [ ""XYZ"" ]", // Note - it has a comma after the ]
我尝试使用在线正则表达式帮手 - 我的正则表达式实际上运行正常。但是当我运行程序时,我收到了这个错误:
Caused by: java.util.regex.PatternSyntaxException: Unclosed character class near index 28
[_]?([a-zA-Z0-9_]+)=("[^]*"),
另一个问题是,我如何格式化正则表达式,以便我也可以将它与此字符串匹配?
MyKey="ID IN [ "ABC" ]", // without the _
_MyKey="ID IN [ "ABC" ]", // with the _
感谢。
[编辑]
你能帮我解决这部分问题吗?
另一个问题是,我如何格式化正则表达式,以便我也可以将它与此字符串匹配?
MyKey =“ID IN [”ABC“]”,//没有_ _MyKey =“ID IN [”ABC“]”,//使用_
答案 0 :(得分:4)
这部分:
[^]
需要
[\\^]*
如果您正在寻找一系列零或帽子字符。 (注意第一个反斜杠是告诉Java字符串解析器第二个反斜杠需要保留在字符串中。最终结果是正则表达式解析器只看到一个反斜杠并用它来表示hat character必须是方括号标识的字符类的一部分。)
或者你错过了一些你不想要的东西:
[^b]*
匹配零个或多个非b字符
考虑您要匹配的内容,请尝试[^"]*
或仅.*
如果确实需要匹配行结尾,请使用.*
并将?s
放在正则表达式的前面,以强制java正则表达式匹配器进入允许点匹配所有字符的模式包括换行符。
感谢@TimPietzcker提供的javascript备注。这表明在线工具不是 Java 正则表达式检查程序,但可能是 javascript 正则表达式检查程序。