java - 寻找 REGEX 来匹配组并选择结束字符串

标签 java regex

我有一个由多个“new Array(...)”子字符串组成的字符串。每个数组都以“)”结尾,除了最后一个数组以外,它都以“))”结尾。

Strong 示例如下所示:

String text="root(new Array(\"Field1\", \"Field2\"), new Array(new Array(\"myArray1F1 (St.)\", \"myArray1F2\"),new Array(\"myArray2F1\", \"myArray2F2\"),new Array(\"myArray3F1\", \"myArray3F2\")) 0, 0)";

我尝试了几种自己制作的或在互联网上找到的模式。但没有任何作用。我从这种模式开始,但仍然想知道为什么这不起作用。

Pattern.compile("(new Array\\(\".*(\\),|\\)\\)))");

Pattern.compile("(new Array\\(\"(?!\\),|\\)\\)).*)");

这几乎按原样返回整个字符串。

    @Test
    public void testMyArray() {
        Pattern arrayPattern = Pattern.compile("(new Array\\(\".*(\\),|\\)\\)))");
        String text="root(new Array(\"Field1\", \"Field2\"), new Array(new Array(\"myArray1F1 (St.)\", \"myArray1F2\"),new Array(\"myArray2F1\", \"myArray2F2\"),new Array(\"myArray3F1\", \"myArray3F2\")) 0, 0)";
        Matcher matcher = arrayPattern.matcher(text);
        while  (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }

这些是我想要检测的组:

new Array("Field1", "Field2") 
new Array("myArray1F1 (St.)", "myArray1F2") 
new Array("myArray2F1", "myArray2F2") 
new Array("myArray3F1", "myArray3F2") 

最佳答案

以下内容对我有用。

/* Required imports
 * import java.util.regex.Matcher;
 * import java.util.regex.Pattern;
 */
Pattern pttrn = Pattern.compile("new Array\\(\".+?\"\\),?");
Matcher mtchr = pttrn.matcher(text);
while (mtchr.find()) {
    System.out.println(mtchr.group());
}

该模式查找以 new Array( 开头,后跟一个单双引号字符,后跟一个或多个字符,再后跟另一个双引号字符,最后跟一个右括号,可能以单个逗号结尾。

请注意,+? 被称为不情愿的限定符,而? 则表示恰好是一或无。

输出为

new Array("Field1", "Field2"),
new Array("myArray1F1 (St.)", "myArray1F2"),
new Array("myArray2F1", "myArray2F2"),
new Array("myArray3F1", "myArray3F2")

关于java - 寻找 REGEX 来匹配组并选择结束字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61731350/

相关文章:

sql - 统计一个字符在 Oracle SQL 中出现的次数

Python正则表达式匹配多次出现的单词

java - 使用 PowerMockito 模拟私有(private)方法

java - 错误 : java. security.AccessControlException:访问被拒绝

jquery - AngularJS ng-重复 : Change Array

python - 使用 Regex 调度多个 url

java - 西里尔字母验证

java - 无法解析 oracle.jdbc.OracleDriver

java - 从 JTree 添加和删除节点

java - 我的 UML 图对于附加代码是否正确?