0

HTTP 応答本文で次のようなフレーズを検索しようとしています。

>> myvar1
<HTML>
<HEAD> <TITLE>TestExample [Date]</TITLE></HEAD>
</HTML>

これを行うと、結果が得られません。

>> myvar.scan(/<HEAD> <TITLE>TestExample [Date]<\/TITLE><\/HEAD>/)
[]

ここで[Date]は、ループの反復によって値を取得する動的変数です。

正規表現で何を追加/変更する必要がありますか?


Nokogiri を使用して、HTTP 応答本文のキーワードをスキャンしています。

4

3 に答える 3

5

HTML のようなマークアップを正規表現で解析しないでください。そのような目的のためには、それを適切な SAX または DOM パーサーにフィードし、その方法で必要なものを抽出する方がはるかに保守しやすいです。その理由は、正規表現をどんなに巧妙に作成しても、おそらく忘れてしまうコーナーケースが常に存在するからです。

require 'nokogiri'

response = "<HTML> <HEAD> <TITLE>TestExample [Date]</TITLE></HEAD> </HTML>"
doc = Nokogiri::HTML( response )


doc.css( "title" ).text
于 2013-05-20T22:26:32.823 に答える
0

これはうまくいきます

<HEAD> <TITLE>TestExample (.*?)<\/TITLE><\/HEAD>

http://rubular.com/r/latepMqrjx

<HEAD> <TITLE>複数のタイトルがあるとは思えないので、おそらく具体的なものは必要ありません。大文字と小文字の区別と改行も問題になる場合があります。私はおそらく使用するだろう

/<title>TestExample (.*?)<\//im
于 2013-05-20T22:17:27.067 に答える