0

に非常に長いメモリ内文字列が格納されてval response: Stringいます。

HTTP / 1.1 200 OK
サーバー:Apache
その他:ヘッダー

<response>
<xml>
---はるかに多くのXML---
</ xml>
</ response>
0

抽出したい

<応答>
...
</応答>

文字列の一部。これまでのところ、私はこれを持っています:

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

...しかし、何らかの理由でScalaはNoneを返します。インデックスとスライス関数を使用してこれを行う方法を見つけましたが、正規表現を使用する場合は適切な方法が必要です。誰もが方法を知っていますか?

4

1 に答える 1

5

まず第一に、XML応答を操作するときは、XMLパーサーを使用する方がおそらくはるかに良い考えです。最初はやり過ぎのように見えるかもしれませんが、プロジェクトが大きくなるにつれて、より複雑なXMLドキュメントを解析する必要が生じる可能性が非常に高くなります。これは、本格的なXMLパーサーよりも正規表現を使用する方がはるかに困難です。

とにかく、この正規表現は機能します:

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

(?s)DOTALLフラグを設定します。

于 2012-07-17T10:02:02.523 に答える