繁体   English   中英

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

[英]Regex matching: long String in Scala

我在val response: String存储了一个很长的内存字符串val response: String看起来像这样的val response: String

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

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

我想提取

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

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

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

...但是由于某种原因,Scala返回None。 我确实想出了一种使用索引和slice函数执行此操作的方法,但是使用regex必须有一种整洁的方法。 有人知道吗?

首先,在处理XML响应时使用XML解析器可能是一个更好的主意。 乍一看似乎有些矫kill过正,但是随着项目的发展,您很有可能最终不得不解析更复杂的XML文档,而使用正则表达式则比使用成熟的XML解析器要困难得多。

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

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

(?s)设置DOTALL标志

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM