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

fed*_*usy 0 regex string scala

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

HTTP/1.1 200 OK
服务器:Apache
其他:头文件

<response>
<xml>
---更多XML ---
</ xml>
</ response>
0

我想提取

<response>
...
</ response>

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

"<response>.*?</response>".r findFirstIn response
Run Code Online (Sandbox Code Playgroud)

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

Mal*_*off 5

首先,在处理XML响应时使用XML解析器可能是一个更好的主意.一开始看起来可能看起来有点过头了,但随着项目的发展,你很可能最终不得不解析更复杂的XML文档,而使用正则表达式比使用完整的XML解析器要困难得多.

无论如何,这个正则表达式工作:

"(?s)<response>.*?</response>".r findFirstIn response
Run Code Online (Sandbox Code Playgroud)

(?s)设置DOTALL标志.