Java регулярное выражение до специального символа - PullRequest
2 голосов
/ 22 марта 2012
String str = "Text0TEXT1.more text ";
String str = "Text0TEXT1(more text ";
String str = "Text0TEXT1{more text ";

Если у меня есть строка, в конце которой может быть несколько символов, например. или (или {или; как я могу извлечь только TEXT1?

Обновление : перед текстом 1 стоит текст 0, а специальный символ может существовать или не существовать

Обновление 2

String str = "Beginning text Text I want . Text I don't want"
String str = "Beginning text with numbers Text I want ( Text I don't want )"
String str = "Beginning text with numbers Text I want { Text I don't want }"

Мне нужно извлечь «Текст, который я хочу», но остальную часть текста я получаю до конца. Специальные символы есть. ({:

Ответы [ 3 ]

3 голосов
/ 22 марта 2012

Как насчет:

^(?:[a-zA-Z ]+[0-9]+ )?([a-zA-Z ,]+)

Текст, который вы хотите, находится в группе 1.

объяснение:

^                 : begining of string
  (?:             : start non capture group
    [a-zA-Z ]+    : one or more letter or space
    [0-9]+        : one or more digit
                  : a space
  )?              : end of group optional
  (               : start capture group 1
    [a-zA-Z ,]+   : one or more letter, sapce or coma
  )               : end of group
0 голосов
/ 22 марта 2012

Я установил простой пример, который решит ваше регулярное выражение с помощью регулярного выражения с положительным соответствием:

[\w ]+(?=[.{(;])

Приведенное выше регулярное выражение извлечет часть перед специальными символами.:

Для части TEXT0 есть ли для нее особый шаблон?

0 голосов
/ 22 марта 2012
str.split("[^\\w\\s]+")[0]

Это будет соответствовать всем последовательным символам [a-zA-Z_0-9] и пробелам в начале строки

List<String> str = new ArrayList<String>();
str.add("TEXT1.more text ");
str.add("TEXT1)more text ");
str.add("TEXT1}more text ");
str.add("Beginning text Text I want . Text I don't want");
str.add("Beginning text with numbers Text I want ( Text I don't want )");
str.add("Beginning text with numbers Text I want { Text I don't want }");
for(String s : str)
    System.out.println("input: [" + s + "], first word: " + s.split("[^\\w\\s]+")[0]);

производит:

input: [TEXT1.more text ], first word: TEXT1
input: [TEXT1)more text ], first word: TEXT1
input: [TEXT1}more text ], first word: TEXT1
input: [Beginning text Text I want . Text I don't want], first word: Beginning text Text I want 
input: [Beginning text with numbers Text I want ( Text I don't want )], first word: Beginning text with numbers Text I want 
input: [Beginning text with numbers Text I want { Text I don't want }], first word: Beginning text with numbers Text I want 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...