Java正则表达式用于解析具有特殊字符和数字的字符串

时间:2014-07-29 07:26:32

标签: java regex

我需要一个java正则表达式来分割以下模式中的单词。

句子将以@符号开头,并继续使用6个数字,然后是@符号。 然后是9个数字然后[符号 然后是6个数字和@符号 然后是2个数字

特殊字符和数字之间可能存在空格

For example :

    @123456@ 123456789[ 123456@ 12

Here my output should be like :
     string1 = 123456
     string2 = 123456789
     string3 = 123456
     string4 = 12

以下正则表达式没有正确地分割单词。有人帮忙吗?

@[0-9]{6}@[0-9]{9}[[0-9]{6}@[0-9]{2}

感谢。

7 个答案:

答案 0 :(得分:2)

捕获组

您可以匹配捕获组:

Pattern regex = Pattern.compile("^@(\\d{6})@ *(\\d{9})\\[ (\\d{6})@ (\\d{2})");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    String firstGroup  = regexMatcher.group(1);
    // 123456
    String secondGroup = regexMatcher.group(2);
    // 123456789
    String thirdGroup  = regexMatcher.group(3);
    // 123456
    String fourthGroup = regexMatcher.group(4);
    // 12
} 

答案 1 :(得分:1)

您必须使用(...)来填充“捕获”。

@([0-9]{6})@([0-9]{9})\[([0-9]{6})@([0-9]{2})

答案 2 :(得分:1)

您要拆分的正则表达式模式是:[@\[]\s*。这个overview将有助于理解模式。 在Java中,它看起来如下:

String string = "@123456@ 123456789[ 123456@ 12";
String[] strings = string.split("[@\\[]\\s*");

strings数组将包含所需的输出[123456,123456789,123456,12]

答案 3 :(得分:1)

您的模式中有错误

    String s = "@123456@ 123456789[ 123456@ 12";
    Pattern p = Pattern.compile("@(\\d{6})@\\s?(\\d{9})\\[\\s?(\\d{6})@\\s?(\\d{2})");
    Matcher m = p.matcher(s);
    if (m.matches()) {
        System.out.println(m.group(1));
        System.out.println(m.group(2));
        System.out.println(m.group(3));
        System.out.println(m.group(4));
    }

答案 4 :(得分:1)

您只需使用String.split()

即可
{
    String[] strArr = "@123456@ 123456789[ 123456@ 12".split("[@\\[] ?");
    string1 = strArr[0];
    string2 = strArr[1];
    string3 = strArr[2];
    string4 = strArr[3];
}
  

Online Demo STDOUT
  123456个
  123456789个
  123456个
  12

答案 5 :(得分:0)

试试这个:

@[0-9]{6}@\s[0-9]{9}\[\s[0-9]{6}@ [0-9]{2}

您应引用实际的[并添加所需的空格。

请参阅此working example

答案 6 :(得分:0)

如果您不确定空格,请将*数量添加到0到无限制。 并确保逃避[

@[0-9]{6}@ *[0-9]{9}\[ *[0-9]{6}@ *[0-9]{2}

在RegEx-Tester http://erik.eae.net/playground/regexp/regexp.html

中正常工作