2011-03-16 22 views
0

このエスケープされたhtml文字列のIDはどのように一致させるのですか?文字列の一部は= \ IDで始まり「と\で終わる」私はエスケープされたhtml文字列のRuby一致部分

"<div class=\"input string optional\"><label class=\"string optional\" for=\"art_images_attributes_0_attachement\"> Attachement</label><input class=\"string optional\" id=\"art_images_attributes_0_attachement\" maxlength=\"255\" name=\"art[images_attributes][0][attachement]\" size=\"50\" type=\"text\" /></div>" 
=> "<div class=\"input string optional\"><label class=\"string optional\" for=\"art_images_attributes_0_attachement\"> Attachement</label><input class=\"string optional\" id=\"art_images_attributes_0_attachement\" maxlength=\"255\" name=\"art[images_attributes][0][attachement]\" size=\"50\" type=\"text\" /></div>" 

敬具をart_images_attributes_0_attachement必要この例では。 ロンヴィグモレル

答えて

1

次の正規表現は、あなたの希望outputpキャプチャします:

/id="([^"]*)"/ 

そしてRubular:http://www.rubular.com/r/dtXqK2GBPe

注意がそれを引用符の前に実際に\文字ではなく、Rubyで文字列の内容"id=\"test\""id="test"の場合、\は含まれている"をエスケープするために存在します。

そしてそれはまたid値の内部エスケープ引用符で動作することを、あなたはこれを使用することができます。

/id="([^"\\]*(?:\\.[^"\\]*)*)"/ 

http://www.rubular.com/r/b66eWno8Ce

+0

これは私が探していたものでしたありがとうございました。 string.match(/ id = "([^"] *) "/)[1] – atmorell

0

正規表現ワイズ、これはそれを行うだろう:

id=\\\"(.+?)\\\" 
+0

ニック・アンドリューの答えで説明したように、あなたの例では – atmorell

+0

nilを返します。私の(素朴な)答えは、私があなたの質問にあったものとまったく一致する必要があるという考えに基づいていました。私は\ sが無視されることに感謝しませんでした。 – Nick

関連する問題