Я делаю небольшой проект, где мне нужно читать строки с командами. Команда представляет собой строку, которая соответствует шаблону "\\&[abcd]"
.
Если между предыдущим совпадением и следующим совпадением существует строка, я должен выполнить операцию над ней на основе предыдущей команды. Я зацикливаюсь с while (m.find())
, и я могу получить строки, соответствующие шаблону (например, команды), но я не уверен, как получить строки, которые не соответствуют шаблону. Замена команд на ""
и получение всей строки будет одним из способов, но тогда я не смогу выполнять операции над определенными подстроками.
Итак, как я могу выполнять операции над строками между командами на основе предыдущей команды?Все, кроме регулярного выражения
код У меня возникли проблемы написания:
int i=0;
while (m.find()) {
switch (m.group()) {
case "&a":
i+=1;
break;
case "&b":
i+=2;
break;
case "&c":
i=4;
break;
...
}
//get non-pattern matching strings and modify it based on previous commands.
}
После ввода: $a$bLola$cg
будет производить следующий вывод: LolaLolaLolagggg
EDIT:
Количество команд или строки не заданы и могут быть в любом порядке. Если нет нити, ничего не будет напечатано. Если команд нет, строка будет напечатана без изменений.
duplicate Ответ здесь не применим: Regex для записи только строк (не команд) не работает, потому что после первого цикла i
полностью изменился бы.
Следующие данные: $a$bLola$cg
будет выводить LolagLolagLolagLolag
.
Можете привести примеры некоторых строк и их замен. – anubhava