2013-08-25 5 views
0

Я знаю, что этот вопрос может быть глупо, но я пытаюсь получить некоторую информацию из текста, и вы моя последняя надежда после того, как последние три часа безуспешных попыток ..Java шаблон регулярного выражения для номера

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

мне нужно получить, например, это

Мне нужно, чтобы получить строку с 8-10 длиной, иногда могут быть некоторые специальные символы, такие как я, я, G, S, О, О, л), но я попробовал много моделей для этого и никто не работает ...

Я пробовал:

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; 
} 
+0

Не могли бы вы показать нам, как вы используете регулярное выражение? – Pshemo

+0

Да, конечно ... Я редактировал свой пост. –

+0

Ваше первое и последнее регулярное выражение отлично подходит для меня http://ideone.com/yOLK3O или, может быть, это неправильный вывод? – Pshemo

ответ

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 
} 

Я ожидаю (включая специальные, которые вы показали в примерах), но пробел.

+0

Нет, мне нужно получить строку длиной 8-10, которая содержит в основном числа, но иногда могут быть некоторые специальные символы, такие как I, i, G, S, O, ó, l .. так, например, я хотел бы получить 123i56ó89 ​​ –

+1

Для строки 'DIC: C/123i56ó89 ​​IC: 407641'6' выдает программы' 123i56ó89'. Таким образом, это покрыто. –

0

Может быть, вы можете разделить вашу строку с пробелами (string.split('\\s');), то вы должны иметь массив так:

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

Получить второй Strin g, разделите его с помощью '/' и получите второй элемент.

Я надеюсь, что это вам помогло.

Подсказка: вы можете проверить после результата с использованием регулярных выражений (([0-9IiGSOól]{8,10})