我在使用正则表达式匹配Java中的字符串时遇到了一些麻烦。以下是我要匹配的字符串:String Transformation Action
和Transformation Action
。基本上,如果存在String
,我想匹配它,否则我只匹配剩余的String。
我试图在正则表达式中使用非捕获组,但它不起作用。
这是我的正则表达式:
String regexFilter = "(?:String) (Transformation) (Action)";
。
这将与String Transformation Action
匹配,但是一旦我带走String
,它就不会匹配。
答案 0 :(得分:2)
您需要使用String
:
?
部分成为可选部分
String regexFilter = "(?:String )?(Transformation) (Action)";
此外,将捕获组置于文字文本(例如Transformation
和Action
)之外并没有多大意义,因为您始终知道这些组将捕获的内容。
String regexFilter = "(?:String )?Transformation Action";
答案 1 :(得分:1)
使用此正则表达式使String
部分可选:
String regexFilter = "\\b(?:String )?Transformation Action\\b";
PS:我还添加了\\b
(字边界),以使您不匹配Transformation Action111
或xyzTransformation Action
类型字符串。
答案 2 :(得分:1)
您需要使非捕获组可选。 ?
量词表示匹配(1
或0
次)
String regexFilter = "(?:String )?(Transformation) (Action)";