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

时间:2019-07-28 23:37:49

标签: java regex

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

  

前两个字母始终是“ AB”,而不是数字   比A或B短1-9,比一串短划线('-')   随机文本后跟冒号(':'),然后是索引位置   一个字母和2位数字。

像这样:

AB8B-ANYLETTERS:H12

AB3B-ANYTHINGCANGOHERE:A77

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

"^.*:[A-H]\\d\\d"

所以一般格式为:

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

我正在使用Java。

1 个答案:

答案 0 :(得分:4)

我猜测也许这个表达式可以验证这一点:

^AB[1-9][AB]-[^:]+:[A-Z][0-9]{2}$

该表达式在regex101.com的右上角进行了解释,如果您想探索/简化/修改它,在this link中,您可以观察到它如何与某些示例输入匹配,如果你喜欢。

测试

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

RegEx电路

jex.im可视化正则表达式:

enter image description here