正则表达式匹配[任何字符] [任何数字]点与异常情况

时间:2017-06-09 02:31:30

标签: java regex

我有一个正则表达式[a-zA-Z0-9]\\.(.*)来匹配: [任何字符,任何数字]后跟一个点,然后是任何内容。例如e1.abc,r11.xyz

这很好用。但是,我有一种情况,如果字符串是e.abc,那么它不应该匹配,即只有它是e.然后它不匹配。

如何修改我的正则表达式以处理此特定排除?

2 个答案:

答案 0 :(得分:3)

您可以通过在第一个前点字符之前添加负前瞻断言来修改正则表达式。这一前瞻将确保第一个字母不是e。这是模式:

.*(?!e)[a-zA-Z0-9]\.(.*)

示例代码:

String match = "a.abc";
if (match.matches(".*(?!e)[a-zA-Z0-9]\\.(.*)")) {
    System.out.println("match");
}
String noMatch = "e.abc";
if (noMatch.matches(".*(?!e)[a-zA-Z0-9]\\.(.*)")) {
    System.out.println("no match");
}

请注意,我假设您的字符串中只有一个点。如果没有,那么这个答案需要改变。

在这里演示:

Rextester

答案 1 :(得分:0)

只需使用当前正则表达式获取所有匹配项,然后只需添加If语句,如下所示:

    String test="e.this is test";
if(!test.startsWith("e."){
    //Do someting
  }