用于java字符串的正则表达式,用于区分包含动态字符的两个不同字符串

时间:2016-04-15 09:46:22

标签: regex

对于下面提到的字符串值,我需要两个不同的正则表达式;

来源文字1:user.tag.<TAG>.<TAGVALUE>

来源文字2:user.tag.<TAG>

一个简单的正则表达式应唯一标识上述两个字符串。但是应该没有重叠。 <>中包含的值是动态的。动态值可以是除.个字符之外的任何内容(包括空格)。

但是我使用了以下正则表达式条件

字符串1的RegEx:(\Quser.tag\E)\.(\w+)\.(\w+)(.*)

字符串2的RegEx:(\Quser.tag\E)\.(\w+)\.(.*)

String 2的正则表达式也会匹配first source string。我不希望这种情况发生,我希望它们是独一无二的。

1 个答案:

答案 0 :(得分:0)

根据您的示例,使用以下正则表达式:

^user\.tag\.([^.]+)\.([^.]+)$

^user\.tag\.([^.]+)$

请注意,在某些较旧的Java版本中\Q..\E is buggy,因此最好避免使用它。