2

RegExを使用してHTMLタグのコンテンツを抽出する必要があります。私が検索しているテキストの本文は次のようになります。

<div class="content">
    The Price is <script type="text/javascript">document.write(123())</script>
</div>

この式を使おうとしましたが失敗しました。「document.write(123())」を抽出する必要があります

(?s)<div class="content">[^<]*<script type="text/javascript">(.*?)</script></div>

式を変更して、自分が求めているものを取得するにはどうすればよいですか?

4

3 に答える 3

1

正規表現にはいくつかの問題があります。

  • (?s)ですか?
  • </script>あなたはとの間のスペースを考慮していません</div>
  • スラッシュ(/)エスケープする必要があると私は信じています。\/

これはうまくいくようです(デモ):

<div class="content">[^<]*<script type="text\/javascript">(.*?)<\/script>[^<]*<\/div>
于 2013-03-05T20:07:43.580 に答える
1

<script>との間のスペースを説明するのを忘れただけです<div>

(?s)<div class="content">[^<]*<script type="text/javascript">(.*?)</script>\s*</div>

于 2013-03-05T20:08:38.963 に答える
1

正規表現を使用してHTMLからコンテンツを抽出することは、狂気への確実な道です。正規表現でメールアドレスを検証するという考えよりも悪いです。

C#/。NETを使用している場合は、HTMLからコンテンツを抽出するのに最適なHtmlAgilityパックをお勧めします( StackOverflowには、その使用方法を示す良い答えがあります)。

他のテクノロジーを使用している場合は、同じことを行う代替ライブラリを探すだけです。他の誰かがすでにこの問題を解決していることが確実にわかります。

于 2013-03-05T20:09:25.157 に答える