0

我知道这个问题可能很愚蠢,但我正试图从文本中获取一些信息,在过去三个小时的尝试之后,你是我最后的希望..

DIC: C/40764176 IC: 407641'6 
Dekujerne a t8ime se na shledanou 

我需要得到例如这个40764176

我需要得到长度为 8-10 的字符串,有时可能会有一些特殊的字符,如 I,i,G,S,O,ó,l) 但我为此尝试了很多模式,但没有人能工作......

我试过了:

String generalDicFormatPattern = "([0-9IiGSOól]{8,10})";
String generalDicFormatPattern = ".*([0-9IiGSOól]{8,10}).*";
String generalDicFormatPattern = "\\b([0-9IiGSOól]{8,10})\\b";

没有任何效果...您知道问题出在哪里吗?

编辑:

我以这种方式使用正则表达式:

private List<String> getGeneralDicFromLine(String concreteLine) {
    List<String> allMatches = new ArrayList<String>();

        Pattern pattern = Pattern.compile(generalDicFormatPattern);
        Matcher matcher = pattern.matcher(concreteLine);

        while (matcher.find()) {             
             allMatches.add(matcher.group(1));
        }                           


    return allMatches;
}   
4

2 回答 2

1

如果您的字符串模式是固定的,您可以使用正则表达式

C/([^\s]{8,10})\sIC:

示例代码:

String s = "DIC: C/40764176 IC: 407641'6";

Pattern p = Pattern.compile("C/([^\\s]{8,10})\\sIC:");
Matcher m = p.matcher(s);

if (m.find()) {
    System.out.println(m.group(1)); // 40764176
}

我期待任何字符(包括您在示例中显示的特殊字符)但一个空格。

于 2013-08-25T19:35:14.597 回答
0

May be you can split your string with spaces (string.split('\\s');), then you should have an array like this :

  1. DIC:
  2. C/40764176
  3. IC: 407641'6
  4. ...
  5. shledanou

Get the second string, split it using '/', and get the second element.

I hope it helped you.

Tip : you can check after the result using a regex (([0-9IiGSOól]{8,10})

于 2013-08-25T19:40:38.040 回答