Регулярное выражение Scala (разбор xml) - PullRequest
0 голосов
/ 27 октября 2010

Я анализирую xml-файл, в котором есть узлы с таким текстом:

<img src="someUrl1"> American Dollar 1USD | 2,8567 | sometext
<img src="someUrl2"> Euro 1EUR | 3,9446 | sometext
<img src="someUrl3"> Japanese Jen 100JPY | 3,4885 | sometext

Что я хочу получить, так это значения:

American Dollar, USD, 2,8576
Euro, EUR, 3,9446
Japanese Jen, JPY, 3,4885

Интересно, как я мог написать регулярное выражение для этого? В Scala есть какие-то странные регулярные выражения, и я не могу этого понять.

1 Ответ

6 голосов
/ 27 октября 2010

Если я вас правильно понял, вы просто хотите использовать регулярные выражения для получения вашей информации. В этом случае вы можете использовать функцию извлечения Scala и сделать что-то вроде этого:

scala> val RegexParser = """(.*) \d+([A-Z]+) \| (.*) \|.*""".r
RegexParser: scala.util.matching.Regex = (.*) \d+([A-Z]+) \| (.*) \|.*

scala> val RegexParser(name,shortname,value) = "American Dollar 1USD | 2,8567 | sometext"
name: String = American Dollar
shortname: String = USD
value: String = 2,8567

scala> val RegexParser(name,shortname,value) = "Euro 1EUR | 3,9446 | sometext"
name: String = Euro
shortname: String = EUR
value: String = 3,9446

scala> val RegexParser(name,shortname,value) = "Japanese Jen 100JPY | 3,4885 | sometext"
name: String = Japanese Jen
shortname: String = JPY
value: String = 3,4885

Сначала вы создаете экстрактор на основе строки регулярных выражений. Это можно сделать, вызвав r для String (точнее, класс StringOps). После этого вы можете использовать этот экстрактор для считывания всех соответствующих элементов (имя, короткое имя, значение). В этом блоге вы найдете хорошее объяснение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...