かなり前から正規表現のスキルを磨きたいと思っていましたが、「正規表現をマスターする」が何度も勧められたので、購入してこの1日ほど読んでいます。
次の正規表現を作成しました。
^(?:<b>)?(?:^<i>)?<a href="/site\.php\?id=([0-9]*)">(.*?) \(([ a-z0-9]{2,10})\)</a>(?:^</i>)?(?:</b>)?$
<i>
これは最初の2つのリンクに一致しますが、タグで囲まれた2つを無視します。ID、タイトル、タイプを抽出します。
<a href="/site.php?id=6321">site 1 title (type 1)</a>
<b><a href="/site.php?id=10254">site 2 title (type 2)</a></b>
<i><a href="/site.php?id=5479">site 3 title (type 3)</a></i>
<b><i><a href="/site.php?id=325">site 4 title (type 4)</a></i></b>
それは機能しますが、非常に単純なものにはかなり長いようですが、改善できるでしょうか?