• ベストアンサー

正規表記について「除く」の表記を教えてください。

正規表記について「除く」の表記を教えてください。 初心者の基本的な質問で申し訳ないですが、教えてください。 例えば、 <ul> <li><a hreh="aaa">お菓子:クッキー</a></li> <li><a hreh="bbb">(飲み物)ヤクルト</a></li> <li><a hreh="ccc">お菓子:チョコレート</a></li> <li><a hreh="ddd">おやつ:アイスクリーム</a></li> </ul> このようなソースから、(飲み物)を含まないリストのタイトル(お菓子:クッキー、お菓子:チョコレート、おやつ:アイスクリーム)を抽出したいのです。 AとBの間を抽出する、というもともとの仕組みがあって、Bには「</a></li>」を指定し、Aには『<li><a[^>]*?>\(』を除く『<li><a[^>]*?>』を抽出する、という表記がしたいのです。 『<li><a[^>]*?>$[^\(]』と書いてみたのですがうまく動きません。 どのようにするば良いのかご教授をよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.3

否定先読みで「(飲み物)」を含まない行を抽出してみるでいかがでしょう。 ^<li><a hreh=".*?">(?!.*\(飲み物\))(.*)</a></li>$ 正)href 誤)hreh ? 参考URL http://d.hatena.ne.jp/satosystems/20100519/1274237784 http://ukiya.sakura.ne.jp/index.php?%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E8%AC%9B%E5%BA%A7/11

DO66
質問者

お礼

なるほど。 否定先読みで抽出する方法があるんですね。 とても参考になりました。 ありがとうございます。 しかも、<a href="">をミスタッチしてましたね・・・。 お恥ずかしいです。 他にもいろいろなパターンがありますので、参考にやってみたいと思います。 ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

正規表現は, それを扱うツールによっていろいろな種類があります. あなたが使うツールはなんですか?

DO66
質問者

お礼

独自開発したツールで、設定条件には正規表現を使うこと、としか聞いていないのです・・・。 正規表現にも種類があるのですね。 もう少し、いろいろ確認してみようと思います。 ありがとうございました。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

カッコ以外の1文字を表す正規表現は、[^(] です。 <li><a.*?>[^(].*?</a></li>

DO66
質問者

お礼

ありがとうございます。 「カッコ以外」の表記がまちがっていたのですね。 初歩的ミスです・・・。 勉強になりました。

関連するQ&A