gpt4 book ai didi

java - 如何创建匹配符号 (、"和 == 的正则表达式

转载 作者:行者123 更新时间:2023-12-01 23:22:03 28 4
gpt4 key购买 nike

从一个长文本文件中,我想获取 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com