1

我想检查=SUM(A1:A10)这样的自定义模式。A1和的位置A10可以改变,但其他是固定的。我尝试了以下代码:

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());
    }
}

但这不行。请帮我!

4

2 回答 2

8

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

于 2013-08-30T13:45:05.670 回答
2

这是您的正则表达式的外观:

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

正则表达式可视化

在 java 字符串中:

"SUM\\([A-T]([1-9]|1[0-9]|20):[A-T]([1-9]|1[0-9]|20)\\)"
于 2013-08-30T13:56:48.843 回答