我有类似
的字符串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','和匹配','然后'可以制作场景。
答案 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 = "\\([^)]++\\)";