检查自定义String模式

时间:2013-08-30 13:40:41

标签: java regex

我想检查=SUM(A1:A10)的自定义模式。 A1A10的位置可以更改,但其他位置可以修复。我尝试了以下代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
    public static void main(String[] args) {
        Pattern pattern=Pattern.compile("SUM[(][A-T][1-20][:][A-T][1-20][)]");
        Matcher m=pattern.matcher("SUM(A9:A1)");
        System.out.println(m.matches());
    }
}

但是不行。请帮帮我!

2 个答案:

答案 0 :(得分:8)

[1-20]之类的模式与您认为的相似。它与1到20之间的数字不匹配,而是匹配1,2和0。要匹配1-20,请使用([1-9]|1\d|20):替代的第一部分匹配10以下的数字,第二匹配范围10-19,第三匹配20。

答案 1 :(得分:2)

这是你的正则表达式应该是什么样的:

SUM\([A-T]([1-9]|1[0-9]|20):[A-T]([1-9]|1[0-9]|20)\)

Regular expression visualization

在java字符串中:

"SUM\\([A-T]([1-9]|1[0-9]|20):[A-T]([1-9]|1[0-9]|20)\\)"