#regex #scala
#регулярное выражение #scala
Вопрос:
Это моя строка, которую я хочу регулярно выражать:
(roman)
item(Hello
World)
item(Foo bar)
Регулярное выражение "item\(.*\)".r
работает только в том случае, n
если в нем нет символов.
Я обнаружил, что (?s)
это должно помочь.
Но "(?s)item\(.*\)".r
включает также второй элемент.
Мой желаемый результат примерно такой List(HellonWorld, Foo bar)
. Возможно ли регулярное выражение с такой нотацией? Или что такое нотация, которая позволяет использовать многострочные регулярные выражения?
Ответ №1:
Попробуйте это (для str задано значение вашей строки выше):
"""item(([^)]*))""".r.findAllMatchIn(str).map{_.group(1)}.toList
Обычно лучше искать последовательность символов, которые не являются конечным символом, а не любой символ.