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

标签 java regex

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

相关文章:

java - 如何在 Spring Boot 和 RabbitMQ 中配置和接收 jSON 有效载荷并将其转换为域对象

java - 使用扫描仪读取文件时出现异常

Javascript正则表达式连续两次避免相同的字符

Java 正则表达式 - 添加括号使其变得贪婪?

regex - Golang 正则表达式 : Ignore multiple occurrences

java - 如何使用 dropwizard 为每个 url 提供多个静态文件?

java - Java EWS API 1.2 库的文档在哪里?

java - XLib:使用正确翻译的弹出窗口来代替Java窗口

python - 如何在 Python 字符串中替换括号和其中的文本

javascript - 使用正则表达式匹配字符串中的 pos 或 neg 两个数字