如何在Java中提取子字符串

时间:2013-05-01 10:36:44

标签: java regex string

我有类似

的字符串
when (update [page1] [desc]) and match ([desc] is not null), then (Rule:setvalue; SourceValue:[ign [desc]]; TargetField:[desc2])

有没有人有好的方法来提取3个字符串:

(update [page1] [desc])
([desc] is not null)
(Rule:setvalue; SourceValue:[ign [desc]]; TargetField:[desc2])

3部分可以是任何字符。 Java正则表达式也很好实现。但添加关键字'when','和匹配','然后'可以制作场景。

2 个答案:

答案 0 :(得分:0)

public static void main(String[] args) {
        String str = "when (update [page1] [desc]) and match ([desc] is not null), then (Rule:setvalue; SourceValue:[ign [desc]]; TargetField:[desc2])";
        Pattern pattern = Pattern.compile("\\((.+?)\\)");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }

    }

输出:

(update [page1] [desc])
([desc] is not null)
(Rule:setvalue; SourceValue:[ign [desc]]; TargetField:[desc2])

如果您不想在输出中使用大括号:

更改:

System.out.println(matcher.group());

要:

System.out.println(matcher.group(1));

答案 1 :(得分:0)

你可以尝试这种模式:

String regex = "\\([^)]++\\)";