从一个长文本文件中,我想获取 if ("
和 ==
之间的所有文本以及 ]", [换行符 + 空格] 之间的文本
“
和 ”, false
。
我是正则表达式的新手,并且很难完成此任务。对于第一个,我想出了 if ("(.*?)"==
但如果我在包含与此类似的字符串条目的文件上使用它:
if ("drinks" == selectedValue) {
productSelect.options[productSelect.options.length] = new Option("lipton ice tea [1.71]",
"lipton ice tea", false, false);
}
使用这种模式:
String pattern1 = "if (\"";
String pattern2 = "\" ==";
Matcher m = Pattern.compile("if (\"(.*?)\" ==").matcher(str);
或者像这样的简短形式:
Matcher m = Pattern.compile("if (\"(.*?)\" ==").matcher(str);
我收到错误,==
之后有一个未封闭的组。
对于其他正则表达式也有类似的错误。我怀疑这是因为没有转义像 (
或 "
这样的字符,但找不到如何执行这些操作。如果有经验的人可以向我解释如何执行这些操作,我将非常感激可以修复这些正则表达式并愉快地解析。
奖励:我还想解析 [
和 ]
之间的小数价格。我会同时研究一下。
最佳答案
“(”的问题在于它是一个元字符(如您所知),您必须用“\”(由于 java 字符串语法而需要双\)来转义它。
快速示例...玩一下:
public class RegExpTest {
public static void main(String[] args) {
String text =
"if (\"drinks\" == selectedValue) {\nproductSelect.options[productSelect.options.length] = new Option(\"lipton ice tea [1.71]\",\n\"lipton ice tea\", false, false);\n}";
String patternString = "if \\(\"(.*)==";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println("Result: '" + matcher.group(1) + "'");
}
}
}
结果:'饮料''
关于java - 如何创建匹配符号 (、"和 == 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20489986/