я должен извлечь некоторые подстроки, это как XML-разметка в простом текстовом документе, какэкстракт между определенным рисунком
lsdkfjsdklfj sdklfsdklfjsd <AAA>myString</AAA>sdfsdfsdfsdf
Может ли я извлечь эту модель в одной команде?
В таком случае я попытался использовать командную команду для извлечения этого единственного совпадения.
Я не хочу, чтобы сделать что-то вроде
String pattern = /<AAA>(.*)<\/AAA>/;
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher("lsdkfjsdklfj sdklfsdklfjsd <AAA>myString</AAA>sdfsdfsdfsdf");
if (m.find()) {
System.out.println("Found value: " + m.group(0));
}
Там должно быть более элегантный способ.
Редактировать: Спасибо, time_yates, я искал что-то в этом роде.
Не могли бы вы объяснить немного, почему вы используете [0] [1] в результате
def extract = (input =~ '<AAA>(.+?)</AAA>')[0][1]
Ответ по tim_yates:
= ~ возвращает Искателя, и так [0] Получает первое совпадение, которое представляет собой 2 группы, первая - это строка, в которой есть совпадение (вся ваша строка), вторая [1] - это группа, которую вы определили в своем выражении.
Большое вам спасибо за помощь и благодаря всем читателям. Власть сообщества !!!
В чем проблема с использованием регулярного выражения и совпадения? – f1sh
Как вы можете использовать js-like regex в Java? –
Я просто думаю, что это немного долго :) – julienasefth