Java中带有空格的正则表达式

时间:2013-12-23 09:42:21

标签: java regex

请帮助制作转换后续字符串的正则表达式:

A [B C] "D E F" 

分为3个字符串

  1. A

  2. B C

  3. D E F

  4. 其中A,B,C,D,E,F是一组字母数字字符,可能包含也可能不包含特殊字符,例如+:/._-等。

    我尝试过类似:[[a-zA-Z0-9/: +]+]\s"[a-zA-Z0-9._/?&=-]+"\s[a-zA-Z0-9-]+的内容。

    但是当我使用Java的Pattern和Matcher类时,这会返回单个识别的模式。我想得到3个不同的小组。

1 个答案:

答案 0 :(得分:2)

如果我理解你的尝试,答案可能非常简单:

String test = "A [B C] \"D E F\"";
//                            | any number of characters (group 1) followed by...
//                            |   | one whitespace, followed by
//                            |   |  | left square bracket, f.b...
//                            |   |  |  | any number of characters (group 2), f.b...
//                            |   |  |  |  | right square bracket, f.b...
//                            |   |  |  |  |   | one whitespace, f.b...
//                            |   |  |  |  |   |  | one double quote, f.b...
//                            |   |  |  |  |   |  | | any number of characters (group 3) f.b...
//                            |   |  |  |  |   |  | |    | one double quote
Pattern p = Pattern.compile("(.+?)\\s\\[(.+)\\]\\s\"(.+?)\"");
Matcher m = p.matcher(test);
if (m.find()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
    System.out.println(m.group(3));
}

<强>输出

A
B C
D E F

注意

如果您希望将更具体的字符范围与您的组1,2和3匹配,请将点字符替换为类或其他一般化。