使用Java编写正则表达式匹配空格

时间:2016-03-10 13:18:48

标签: java regex

如何使此正则表达式匹配空格?目前,它只能匹配以下内容:

abcdatcsdotuniversitydotedu

我希望能够做到以下几点:

abcd at cs dot university dot edu

这是正则表达式:

([A-Za-z][A-Za-z0-9.\\-_]*)\\s[ ]?(at)[ ]*([A-Za-z][A-Za-z0-9\\-_(dot)]*[ ]?(dot)[ ]*[A-Za-z]+)

2 个答案:

答案 0 :(得分:3)

\s匹配空白字符,当在java字符串中使用它时,您需要转义\,因此它将是\\s。如果您想匹配零或多个空格,请使用\\s*

这将匹配单个域和TLD:

([A-Za-z][A-Za-z0-9.\\-_]*)\\s*(at)\\s*([A-Za-z][A-Za-z0-9\\-_()]*\\s*(dot)\\s*[A-Za-z]+)

但是,您尝试匹配多个级别的子域,因此您需要将([A-Za-z][A-Za-z0-9\\-_()]*\\s*(dot)\\s*中的正则表达式()+的域部分包装起来以获取其中的一个或多个:< / p>

([A-Za-z][A-Za-z0-9.\\-_]*)\\s*(at)\\s*(([A-Za-z][A-Za-z0-9\\-_()]*\\s*(dot)\\s*)+[A-Za-z]+)
                                       ^                                        ^^

这样的事情:

public class RegexpMatch {
    static Pattern Regex = Pattern.compile(
            "([A-Za-z][A-Za-z0-9.\\-_]*)\\s*(at)\\s*(([A-Za-z][A-Za-z0-9\\-_()]*\\s*(dot)\\s*)+[A-Za-z]+)"
        );

    public static void main( final String[] args ){
        final String[] tests = {
                "abcdatcsdotuniversitydotedu",
                "abcd at cs dot university dot edu"
        };

        for ( final String test : tests )
            System.out.println( test + " - "  + ( Regex.matcher( test ).matches() ? "Match" : "No Match" ) );
    }
}

哪个输出:

abcdatcsdotuniversitydotedu - Match
abcd at cs dot university dot edu - Match

答案 1 :(得分:0)

<mat-tab-group>
  <mat-tab label="First"> Content 1 </mat-tab>
  <mat-tab label="Second"> Content 2 </mat-tab>
  <mat-tab label="Third"> Content 3 </mat-tab>
</mat-tab-group>
  

\ p {L}匹配类别“字母”中的单个代码点。

     

\ p {N}与任何脚本中的任何数字字符匹配。

我正在使用此代码。