Мое требование - получить несколько шаблонов регулярных выражений в заданной строке.
"<a href=\"https://page1.google.com/ab-cd/ABCDEF\”>Hello</a> hiiii <a href=\"https://page2.yahoo.com/gr\”>page</a><img src=\"https://image01.google.com/gr/content/attachment/987654321\” alt=\”demo image\”></a><a href=\"https://page3.google.com/hr\">"
С этим кодом:
val p = Pattern.compile("href=\"(.*?)\"") val m = p.matcher(str) while(m.find()){ println(m.group(1)) }
Я получаю вывод:
https://page1.google.com/ab-cd/ABCDEF https://page2.yahoo.com/gr https://page3.google.com/hr
С изменением в паттерне:
val p = Pattern.compile("img src=\"(.*?)\"")
https://image01.google.com/gr/content/attachment/987654321
Но с рисунком:
val p = Pattern.compile("href=\"(.*?)\"|img src=\"(.*?)\"")
https://page1.google.com/ab-cd/ABCDEF https://page2.yahoo.com/gr Null https://page3.google.com/hr
Пожалуйста, дайте мне знать, как получить несколько шаблонов регулярных выражений или есть ли другой способ сделать это?
Спасибо
Вы можете использовать
val rx = "(?:href|img src)=\"(.*?)\"".r val results = rx.findAllMatchIn(s).map(_ group 1) // println(results.mkString(", ")) prints: // https://page1.google.com/ab-cd/ABCDEF, // https://page2.yahoo.com/gr, // https://image01.google.com/gr/content/attachment/987654321, // https://page3.google.com/hr
См. Демо Scala
Детали
(?:href|img src)=\"(.*?)\"
href
img src
="
"
.findAllIn
.map(_ group 1)