带有特殊字符的 Java 正则表达式

时间:2021-04-06 04:05:22

标签: java regex

我在 java ["1234","abd df"] 中有一个文本字符串,我需要用 Java 编写一个正则表达式来捕获这两个元素

第一个元素=1234, 第二个元素=abd df

我正在使用以下正则表达式

\\[\\"(.*?)\\",\\".*?\\"\\]

但是上面不能正常工作,实际上两个元素都可以是数字或字母,有人可以指导我使用正确的正则表达式字符串吗?

谢谢

2 个答案:

答案 0 :(得分:0)

这将分别匹配它们:

"[^"]*"

这将匹配逗号分隔的带引号的字符串并捕获带引号的部分:

"([^"]*)","([^"]*)"

答案 1 :(得分:0)

您的正则表达式非常接近。

对其进行了小改动以表明我有效。

您的正则表达式:

\\[\\"(.*?)\\",\\".*?\\"\\]

小改动后:

\\[\"(.*?)\",\"(.*?)\"\\]

上下文中的正则表达式:

public static void main(String[] args) {
    String input = "[\"1234\",\"abd df\"]";

    Matcher matcher = Pattern.compile("\\[\"(.*?)\",\"(.*?)\"\\]").matcher(input);

    if(matcher.find()) {
        System.out.printf("Element 1: '%s'%n", matcher.group(1));
        System.out.printf("Element 2: '%s'%n", matcher.group(2));
    }
}

输出:

Element 1: '1234'
Element 2: 'abd df'