Closed7

複数のaタグの集まりから、リンク先に特定の文字が含まれるaタグだけ抽出する

itsumoonazicodeitsumoonazicode

ターゲットになるHTML。
この中から、リンク先にaccessを含むaタグだけを抽出したい。

<nav>
  <a href="/about">About</a> | <a href="/access">Access</a> | <a href="/contact">Contact</a>
</nav>
itsumoonazicodeitsumoonazicode

最短一致で、閉じタグを該当のaタグだけに絞ることはできた。
でも、これだと先頭のaタグを絞ることができない…
<a.*access.*?>.*?<\/a>

itsumoonazicodeitsumoonazicode

リンク先にaccessを含むaタグの抽出ができるようになった。

accessはdocumentsフォルダの中にいるので、パスのパターンとして想定されるのを拾えるようにした
"access", "documents/access", "../documents/access", "documentRoot/documents/access"

https://regex101.com/r/ZQesNz/3

itsumoonazicodeitsumoonazicode

肯定先読みの部分は要らないっぽいけど、ひとまずこれで期待する値が取れるようになった。

(?:)
これを使うと、キャプチャしないグルーピングができる。正規表現で抽出した値の一部を使用した置換を実行するときに便利かも。

.*?
のっけから、この表現を使う前提で考えていたのが良くなかった。正規表現を使うときには、抽出したい文字列がどういう文字の組み合わせでできているのか、をまず把握することが大事。

このスクラップは2022/06/08にクローズされました