1

string から「toast」を抽出したいと思います<h1>test</h1><div>toast</div>。そのような文字列を分離できる正規表現は何ですか?

編集:フォーマットを修正したユーザーに感謝します。

詳細情報: div タグのインスタンスは常に 1 つだけです。内部の情報は変更される可能性がありますが、同じ文字列に別の div タグが存在することはありません (文字列は指定されたサンプルよりも大きくなります)。

ありがとう!

4

3 に答える 3

1

もっと情報が必要です。文字列が正確"<h1>test</h1><div>toast</div>"に である場合、次のような単純なもの

regex = /<h1>test<\/h1><div>([^<]*)<\/div>/
found = "<h1>test</h1><div>toast</div>".match(regex)[1]
# => "toast"

動作します。この時点での私の最善の推測は、あなたが期待していることです

<h1>*</h1><div>*</div>

次にこれを使用します:

regex = /<h1>[^<]*<\/h1><div>([^<]*)<\/div>/
found = "<h1>any string can go here</h1><div>toast</div>".match(regex)[1]
# => "toast"

いずれかのタグにネストされた要素がある場合、これは壊れることに注意してください。より堅牢なソリューションは Nokogiri を使用することです。上司に相談してください。

于 2013-08-07T17:57:00.557 に答える