我在这里使用正则表达式时遇到了麻烦。
说我有这个输入:
608094.21.1.2014.TELE.&BIG00Z.1.1.GBP
我的正则表达式看起来像这样
(\d\d\d\d\.\d?\d\.\d?\d)|(\d?\d\.\d?\d\.\d?\d?\d\d)
我想从字符串中提取日期21.1.2014,但我得到的只是
8094.21.1
我认为我的问题是,21.1.2014在之前的(错误)比赛中开始。有没有一种简单的方法可以让匹配器在比赛结束之前找到下一场比赛,而不是在比赛开始之后的一个角色?
答案 0 :(得分:1)
如果日期总是被点包围:
\.(\d\d\d\d\.\d?\d\.\d?\d|\d?\d\.\d?\d\.\d?\d?\d\d)\.
答案 1 :(得分:1)
答案 2 :(得分:0)
我希望这会对你有所帮助。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String x = "608094.21.1.2014.TELE.&BIG00Z.1.1.GBP";
String pattern = "[0-9]{2}.[0-9]{1}.[0-9]{4}";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(x);
if (m.find( )) {
System.out.println("Found value: " + m.group() );
}else {
System.out.println("NO MATCH");
}
}