2012-04-19 6 views
0

私は文字列のRegExをほぼ一日作成しようとしていますが、それでもまだ機能していません。引用符で値を抽出するためのRegexのヘルプpls

string example (double quotes are options, and can also be single quotes): 
    "234"? "<img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" />" 

and the following groups should be extracted: 
    234 
    <img src="http://abc.com/a.jpg" onclick="alert(""working with 'quotes'?"");" /> 

希望があれば誰でも助けてください!

var s = "\"234\"? \"<img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" />\""; 
var matches = s.match(/['"][\d]*['"](?=[\s]*\?)|['"]<[^><]*>['"]/ig); 

最初の部分オプションのスペースと続く引用符の内側['"][\d]*['"](?=[\s]*\?)試合番号:?

+0

賭け区切り文字を "?"空白は最初の部分の場合は –

+0

、後の部分の場合は "?"で区切られます。二重引用符は任意です –

答えて

1

この正規表現の効率についてはわかりませんが、ここではあなたの文字列にマッチしたものがあります。

ルール

  1. 番号の前後に引用符はオプションであり、一重引用符することができます。
  2. htmlの引用符は省略可能で、一重引用符でもかまいません。
  3. 疑問符の後のスペースには0個以上を設定できます。

入力

"234"? "<img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" />" 

正規表現

^['"]?(?<number>\d+)['"]?\?\s*['"]?(?<html>\<.*\>)['"]?$ 

出力グループ

number: 234 
html: <img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" /> 
+0

私はこれが助けてくれることを願っています。申し訳ありませんが、あなたの質問が要件をよく説明しているとは思えませんでした。 – Joshua

+0

文字列に別のタグ(<>)を追加すると、regexpが失敗するのではないかと思います。最初の<と最後の>の間のすべてに一致します。 – Kniganapolke

+0

あなたは何を意味するのかわかりません。したがって、追加の '<>'文字を追加すると、 'html'グループ内で一致します。質問はあいまいでしたが、私はそれが望ましいと思いました。 :-) – Joshua

0

これは(JavaScriptで)迅速なソリューションです。
['"]<[^><]*>['"]は、引用符で囲まれた任意の記号(<、>を除く)と一致し、<>と一致します。

このソリューションの欠点の1つは、一致する結果が引用符で囲まれていることです。
必要なものを実装するのに役立ちます。

+0

非常に感謝します!私は少しそれを変更し、今それは動作します! –

関連する問題