抢街饭 2012-11-29 16:55
浏览 181
已采纳

求一个Java正则表达式

[code="java"]
public class Test {

public static final String REGEXP_PATTERN = "^[0-9\\*TSPx\\.\\|\\(\\)\\[\\]\\{\\}~,\\\\]+$";

public static void main(String[] args) {
    String name = "[[[[[[[[[[";
    if (!name.matches(REGEXP_PATTERN)) {
        System.out.println("contains invalid characters. ");
    } else {
        System.out.println("Pass");
    }

}

}
[/code]
‘((((((((’, ‘[[[[[[[[’, ‘{{{{{{{{’, ‘()()()()’, ‘[][][][]’, ‘{}{}{}{}’

在我的正则基础上修改 以上的字符不能通过验证

  • 写回答

2条回答 默认 最新

  • jinnianshilongnian 2012-11-29 18:26
    关注

    [code="java"]import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.atomic.AtomicInteger;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class Test {

    public static final Pattern REGEXP_PATTERN = Pattern.compile("(\\(.*\\))|(\\[.*\\])|(\\{.*\\})");
    
    public static void main(String[] args) {
        String name = "(()()()(()))  ]]]]]]]  [[]]";
    
        System.out.println(matches(name, null));
    }
    
    public static boolean matches(String value, Map<String, AtomicInteger> counter) {
    
        if(counter == null) {
            counter = new HashMap<String, AtomicInteger>();
            counter.put("(", new AtomicInteger(0));
            counter.put("[", new AtomicInteger(0));
            counter.put("{", new AtomicInteger(0));
        }
    
        int valueLength = value.length();
        Matcher matcher = REGEXP_PATTERN.matcher(value);
        while(matcher.find()) {
            String group = matcher.group();
            System.out.println("matches:" + group);
    
            if(group.length() > 0) {
                String prefix = group.substring(0, 1);
                AtomicInteger count = counter.get(prefix);
                if(count != null) {
                    count.incrementAndGet();
                }
            }
            for(AtomicInteger count : counter.values()) {
                if(count.get() > 1) {
                    return false;
                }
            }
            matches(group.substring(1, group.length()-1), counter);
        }
        return true;
    }
    

    }
    [/code]

    你试一下 使用嵌套做的 可能效率不是很高

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题