正则表达式匹配:Scala中的长字符串

时间:2012-07-17 09:48:30

标签: regex string scala

我在val response: String中存储了一个非常长的内存中字符串,看起来像

  

HTTP / 1.1 200 OK
  服务器:Apache
  其他:标题

  <响应>
  < XML>
  ---更多的XML ---
  < / XML>
  < /响应>
  0

我想提取

  

<响应>
  ...
  < /响应>

字符串的一部分。到目前为止,我有这个:

"<response>.*?</response>".r findFirstIn response

...但由于某种原因,Scala返回None。我确实找到了使用索引和切片函数执行此操作的方法,但必须有一个使用正则表达式的简洁方法。谁知道怎么做?

1 个答案:

答案 0 :(得分:5)

首先,在处理XML响应时使用XML解析器可能要好得多。一开始可能看起来有些过分,但随着项目的发展,很可能你最终不得不解析更复杂的XML文档,这对于正则表达式来说要比使用成熟的XML解析器要困难得多。 / p>

无论如何,这个正则表达式有效:

"(?s)<response>.*?</response>".r findFirstIn response

(?s)设置DOTALL flag