ホームページ  >  記事  >  バックエンド開発  >  正確なデータ抽出のために正規表現内のオプションの空白を処理するにはどうすればよいですか?

正確なデータ抽出のために正規表現内のオプションの空白を処理するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 08:20:30387ブラウズ

How to Handle Optional Whitespace in Regular Expressions for Accurate Data Extraction?

オプションの空白正規表現: 属性値のスペースを無視する

プログラミングでは、文字列にオプションの空白が含まれるインスタンスを処理する必要があるシナリオがあります。 。データを正確に抽出するための正規表現を記述する場合、これは困難な場合があります。

次のコードを考えてみましょう:

# Get Image data
preg_match('#<a href=&quot;(.*?)&quot; title=&quot;(.*?)&quot;><img alt=&quot;(.*?)&quot; src=&quot;(.*?)&quot;[\s*]width=&quot;150&quot;[\s*]height=&quot;(.*?)&quot;></a>#', $data, $imagematch);
$image = $imagematch[4];

このコードは、HTML マークアップから画像の src 属性を抽出します。ただし、

<code class="html"><a href=&quot;/wiki/File:Sky1.png&quot; title=&quot;File:Sky1.png&quot;><img alt=&quot;Sky1.png&quot; src=&quot;http://media-mcw.cursecdn.com/thumb/5/56/Sky1.png/150px-Sky1.png&quot;width=&quot;150&quot; height=&quot;84&quot;></a></code>

または

<code class="html"><a href=&quot;/wiki/File:TallGrass.gif&quot; title=&quot;File:TallGrass.gif&quot;><img alt=&quot;TallGrass.gif&quot; src=&quot;http://media-mcw.cursecdn.com/3/34/TallGrass.gif&quot; width=&quot;150&quot;height=&quot;150&quot;></a></code>

など、特定の属性の間に空白がない場合は処理できません。この問題に対処するには、オプションの空白正規表現を使用できます。これにより、文字間のスペースを無視できるようになります。その方法は次のとおりです:

#<a href\s?=&quot;(.*?)&quot; title\s?=&quot;(.*?)"><img alt\s?=&quot;(.*?)&quot; src\s?=&quot;(.*?)&quot;[\s*]width\s?=&quot;150&quot;[\s*]height\s?=&quot;(.*?)"></a>#

この更新された正規表現では:

  • s? = の前に、スペースは許可されますがオプションであることを意味します。
  • s* 属性値の後では、属性名と値の後にスペースをオプションで使用できます。

以上が正確なデータ抽出のために正規表現内のオプションの空白を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。