Java Regex非捕获组

时间:2014-06-26 14:18:46

标签: java regex

我在使用正则表达式匹配Java中的字符串时遇到了一些麻烦。以下是我要匹配的字符串:String Transformation ActionTransformation Action。基本上,如果存在String,我想匹配它,否则我只匹配剩余的String。

我试图在正则表达式中使用非捕获组,但它不起作用。

这是我的正则表达式: String regexFilter = "(?:String) (Transformation) (Action)";。 这将与String Transformation Action匹配,但是一旦我带走String,它就不会匹配。

3 个答案:

答案 0 :(得分:2)

您需要使用String

使?部分成为可选部分
String regexFilter = "(?:String )?(Transformation) (Action)";

此外,将捕获组置于文字文本(例如TransformationAction)之外并没有多大意义,因为您始终知道这些组将捕获的内容。

String regexFilter = "(?:String )?Transformation Action";

答案 1 :(得分:1)

使用此正则表达式使String部分可选:

String regexFilter = "\\b(?:String )?Transformation Action\\b";

PS:我还添加了\\b(字边界),以使您不匹配Transformation Action111xyzTransformation Action类型字符串。

答案 2 :(得分:1)

您需要使非捕获组可选。 ?量词表示匹配(10次)

String regexFilter = "(?:String )?(Transformation) (Action)";