日期:2014-05-20  浏览次数:20756 次

求一个正则 谢谢


这种不符合:

张江路888碧波大道295 2个路之间是数字开头则失败(false)

下面返回true:

张江路w888碧波大道295 true


张江路靠近碧波大道295 true



------解决方案--------------------
A,B 是固定的,那就判断A,B之间的字符串,第一个是不是在0-9之间的字符,应该不难弄。
------解决方案--------------------
Java code
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String[] args) {
        String A = "张江路";
        String B = "碧波大道";
        Pattern p = Pattern.compile(A + "\\d.*" + B);
        Matcher m = p.matcher("张江路12p碧波大道295");
        while(m.find()){
            System.out.println("false");
        }
    }
}

------解决方案--------------------
Java code

        String str = "aaaaa222bbbb";
        String A = "aaa";
        String B = "bbb";
        Pattern p = Pattern.compile((A + "*?" + B));
        Matcher m = p.matcher(str);
        while(m.find()){
            String temp = m.group();
            System.out.println(temp + "\t" + temp.matches(A +"[^\\d].*?" + B));
        }