我想检查=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());
}
}
但是不行。请帮帮我!
答案 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)\)
在java字符串中:
"SUM\\([A-T]([1-9]|1[0-9]|20):[A-T]([1-9]|1[0-9]|20)\\)"