字符串的格式为[( 1.0N)-195( 1.0E)-195(28)-769.7(NESW)-1080.8(U)-617.9(43-047-30127)]
我需要匹配正则表达式以查看字符串是否包含-XXX-XXX
(其中X
是数字)
Pattern p = Pattern.compile("(?=.*?(?:-[0-9][0-9][0-9]-[0-9][0-9][0-9]))");
if(p.matcher(a).matches())
{
System.out.println("Matched");
}
我也尝过-[0-9][0-9][0-9]-[0-9][0-9][0-9]
和(?=.*?-[0-9][0-9][0-9]-[0-9][0-9][0-9])
什么都没有用
答案 0 :(得分:2)
子字符串会更容易,但(?:\\d{2})(-\\d{3}-\\d{5})
会将-XXX-XXXXX与1组匹配。
我假设最后一个数字中的3位数字是错误的。如果不是只将5更改为3。
答案 1 :(得分:1)
如果要检查字符串是否包含-3digits-3digits
String a = "43-037-30149";
Pattern p = Pattern.compile(".*(-[0-9]{3}-[0-9]{3})");
if(p.matcher(a).matches())
{
System.out.println("Matched");
}
答案 2 :(得分:0)
为什么不使用substring ??
String b = a.substring(2,9);
或者这个:
String c = a.substring(a.indexOf('-'), a.indexOf('-') + 8);
使“仅”子串也会更有效率! ;)