Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为此文本创建正则表达式?_Java_Regex - Fatal编程技术网

Java 如何为此文本创建正则表达式?

Java 如何为此文本创建正则表达式?,java,regex,Java,Regex,我需要创建一个正则表达式来检查文本是否遵循以下格式: 前两个字母总是“AB”,而不是数字 1-9比A或B比一个破折号('-')比一束 随机文本后跟冒号(“:”),然后索引 一个字母和两位数 所以像这样: AB8B-ANYLETTERS:H12 或 我这样做是为了检查索引位置,但无法找出冒号前的文本 "^.*:[A-H]\\d\\d" 因此,一般的格式是: AB[1-9][A or B]-[ANYCHARACTERS]:[A-Z][01-99] 我正在使用Java 我猜这个表达式可能会验证:

我需要创建一个正则表达式来检查文本是否遵循以下格式:

前两个字母总是“AB”,而不是数字 1-9比A或B比一个破折号('-')比一束 随机文本后跟冒号(“:”),然后索引 一个字母和两位数

所以像这样:

AB8B-ANYLETTERS:H12

我这样做是为了检查索引位置,但无法找出冒号前的文本

"^.*:[A-H]\\d\\d"
因此,一般的格式是:

AB[1-9][A or B]-[ANYCHARACTERS]:[A-Z][01-99]

我正在使用Java

我猜这个表达式可能会验证:

^AB[1-9][AB]-[^:]+:[A-Z][0-9]{2}$
如果您希望探索/简化/修改该表达式,将在的右上面板中对其进行解释。在中,如果您愿意,可以查看它与一些示例输入的匹配情况

试验
你可以用
\\d
替换
[0-9]
,他们做的事情与第一个数字的
[1-9]
和第二个数字的
[01-99]
是一样的,我想这就是
(0[1-9]|[1-9][0-9])
。顺便说一句,你的
regex101
链接指向了一个不同的例子。基本上,它可以是结尾处的任何数字,所以我只是在做/d谢谢你的回答,还有一个问题,在regex中我该怎么做“或”?就像我们的第四个字符,你做了A-B,但是如果我想做A和C,我能做[A | C]吗?为什么你需要尾随项的索引位置?你到底想做什么?
^AB[1-9][AB]-[^:]+:[A-Z][0-9]{2}$
import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "^AB[1-9][AB]-[^:]+:[A-Z][0-9]{2}$";
final String string = "AB8B-ANYLETTERS:H12\n"
     + "AB3B-ANYTHINGCANGOHERE:A77";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}
^AB[1-9][AC]-[^:]+:[A-Z][0-9]{2}$