Java 包含点的字符串的模式匹配
模式是:Java 包含点的字符串的模式匹配,java,regex,Java,Regex,模式是: private static Pattern r = Pattern.compile("(.*\\..*\\..*)\\..*"); 字符串为: sentVersion = "1.1.38.24.7"; 我有: 我期望1.1.38,但模式匹配失败。如果我改为Pattern.compile((.\\\\\\\\\\\\\\\\\\\\\\.*)\\.*) //请注意,我在最后一个之前删除了“.”* 然后1.1.38.XXX失败 我的目标是在任何传入字符串中查找(x.x.x)
private static Pattern r = Pattern.compile("(.*\\..*\\..*)\\..*");
字符串为:
sentVersion = "1.1.38.24.7";
我有:
我期望1.1.38,但模式匹配失败。如果我改为Pattern.compile((.\\\\\\\\\\\\\\\\\\\\\\.*)\\.*)代码>
//请注意,我在最后一个之前删除了“.”*
然后1.1.38.XXX
失败
我的目标是在任何传入字符串中查找(x.x.x)
我哪里错了?问题可能是由于您的正则表达式过于贪婪。尝试此基于否定的正则表达式模式:
private static Pattern r = Pattern.compile("([^.]*\\.[^.]*\\.[^.]*)\\..*");
在线演示:使您的*
与匹配?
Pattern r = Pattern.compile("(.*?\\..*?\\..*?)\\..*");
否则,*
将匹配整个字符串
值
请看这里:
Pattern r = Pattern.compile("(.*?\\..*?\\..*?)\\..*");