小编uzr*_*bin的帖子

Matcher在匹配后抛出IllegalStateException

我对Matches有一些奇怪的问题,希望有人可以解决一些问题.
根据Java文档:

public boolean matches()...如果匹配成功,则可以通过start,end和group方法获取更多信息.

一些代码:

private static Hashtable<String,String> splitAddress(String address){
        Hashtable<String,String> result = new Hashtable<String,String>();

        Matcher m = addrLong.matcher(address);
        if (m.matches()) {
            result.put("number", m.group(1));
Run Code Online (Sandbox Code Playgroud)

这是它抛出的地方:

java.lang.IllegalStateException: No match found
    java.util.regex.Matcher.group(Matcher.java:485)
    splitAddress(WebServiceHelper.java:699)
Run Code Online (Sandbox Code Playgroud)

仅此一点对我来说很奇怪.如果它有帮助,这里有更多信息:

    private static final String numberRegex = "[0-9]*[a-zA-Z]?"; // 123a 123
    private static final String compassRegex = "N|E|S|W|NORTH|EAST|SOUTH|WEST|NORD|EST|SUD|OUEST";
    private static final String typeRegex = "STREET|ST|DRIVE|DR|AVENUE|AVE|AV|ROAD|RD|LOOP|LP|COURT|CT|CIRCLE|LANE|LN|BOULEVARD|BLVD|CRESCENT|CR";

addrLong = Pattern.compile("(" + numberRegex + ")\\s(.*)\\s(" + typeRegex + ")\\s?(" + compassRegex + ")?");
Run Code Online (Sandbox Code Playgroud)

我一直在测试的输入字符串是"12 CLARE ST E"

谢谢!

编辑:哎呀,我粘贴了我的addrShort声明而不是我的addrLong

Edit2:我知道命名约定正在被打破.我发誓,我没有写那部分.

更新: …

java regex matcher

7
推荐指数
1
解决办法
2824
查看次数

标签 统计

java ×1

matcher ×1

regex ×1