0

Mfr Part#: MBRB1045G Technologie ...我有一个总是像or一样构建的字符串Mfr Part#: MBRB1545CTT4G Mounting,所以总是Mfr Part#:partnumber我想要提取的,然后它后面跟着或者Technologie其他Mounting字符。

您将如何从中提取该零件编号MBRB1045G

4

4 回答 4

3

这应该可以解决问题:

    final Pattern pattern = Pattern
            .compile("Mfr Part#: ([^ ]+) (Technologie|Mounting).*");
    final Matcher matcher = pattern
            .matcher("Mfr Part#: MBRB1045G Mounting");
    matcher.matches();
    System.out.println(matcher.group(1));

但是,如果检查字符串是否具有特定模式对您来说并不重要,您也可以使用更简单的表达式:Mfr Part#: ([^ ]+) .*

另请注意,您可以存储模式对象并将其重用于后续使用。这会给你更好的表现。

于 2012-05-08T18:43:05.900 回答
0

可能带有分组的正则表达式是最好的。(谷歌perlre)

String input = "Mfr Part#: MBRB1045G Technologie";
String regexpression = "Mfr Part#: (\\w+) (\\w+)";
Pattern p = Pattern.compile(regexpression);
Matcher m = p.matcher(input);
if (m.matches()) {
    String part = m.group(1);
    String desc = m.group(2);

    System.out.println(part);
    System.out.println(desc);
}
于 2012-05-08T18:45:57.817 回答
0

我看到了两种方法(可能还有其他方法):正则表达式和组,或 indexOf 和子字符串

1) 正则表达式和组

String input = "Mfr Part#: MBRB1045G Technologie";
Pattern p = Patter.compile("Mfr Part#: ([A-Z0-9]+) (Technologie|Mounting)");
Matcher m = p.matcher(input);
while(m.find()) {
    System.err.println("Part number: "+m.group(1)+ "Second part is "+m.group(2);
}

2) indexOf 和子字符串

String prefix = "Mfr Part#: ";
String input = "Mfr Part#: MBRB1045G Technologie";
for (int i=  0;i<input.length();i++) {
    int index1 = input.indexOf(prefix);
    int index2 = index1+prefix.length();
    int index3 = input.indexOf(" ", );
    int index4 = input.indexOf(" ", index3+1);
    System.err.println("Part number: "+input.substring(index2, index3)
          + "Second part is "+input.substring(index3, index4);
    index = index4;

}

警告:我没有运行它,所以你可能需要修正错别字。

于 2012-05-08T18:46:13.760 回答
0

我可能会使用java.util.Scanner. 这可能不是这样做的最佳方式,但在我看来是最舒服的。
它会这样工作:

import java.util.Scaner;

String s = "Mfr Part#: MBRB1045G Technologie RZ137GA";
Scanner scn = new Scanner(s);
scn.next();
scn.next();
String partnumber = scn.next();
scn.next();
String technologie = scn.next();
scn.close();

该变量partnumber将包含MBRB1045Gtechnologie包含RZ137GA

于 2012-05-08T18:45:10.680 回答