重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

正規表現でタグの中を除く文字をマッチングするしたいのですが
良い方法はありますでしょうか。

例えば
<a>のタグの中にない、"あい"を"かき"に変換したい。

<a>あいうえお</a>あいうえお

<a>あいうえお</a>かきうえお

という様にしたいのです。
正規表現では向かない処理かも知れませんが、
良い書き方ありましたら教えてください。

A 回答 (3件)

どこまで、フォローが必要なのかわかりませんが、


最も単純には、

"<a>あいうえお</a>あいうえお".replaceAll("(^(?!<a>)|(?<=</a>))((?!<a>)あい)", "かき")

で、可能かと思います。

解説は、以下をご参照ください。ここの方法を、そのまま流用しています。
ここには、数多くのパターンが載っていて、勉強になると思います。
http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/r …
    • good
    • 0
この回答へのお礼

有難うございました。
解決出来そうですので、後は自分で色々調査してみます。
助かりました。

お礼日時:2008/10/08 09:40

これも必要か。


<p><![CDATA[あ]]><![CDATA[い]]><!--あ--><!--い--><em>あ</em><em>い</em></p>

この回答への補足

上記のパターンはXMLパーサーを使いノードは纏めてから処理を行う事ができるので、考えなくても大丈夫です。
ヒットする文字が分かれてしまう場合はヒットしないで大丈夫です。

現在正規表現で処理している所がある為、出来れば正規表現で解決したいのです。
現在いくつかのパターンの置換処理を行っていますが、置換処理の設定(正規表現、置換後の文字列等)をconfファイルに持っています。

上記は今現在の処理ですが、上記の正規表現を<del>タグ以外の所で、行いたいという要望がありました。

実際には"あい"の所がconfに設定されている正規表現になるのですが、
confの設定の変更で解決できるのか、または全体的に作り直さなければいけないのか判らず質問させて頂きました。

なんでも良いので、アドバイス宜しくお願いします。

補足日時:2008/10/07 20:01
    • good
    • 0

>正規表現では向かない処理かも知れませんが、


YES。正規表現がどうしても必要という場合俺は力になれない。

書く前にひとつ質問なんだけど,

<p title="あいうえお"><a title="あいうえお">あいうえお</a>あいうえおかか&#x3042;&#x3044;いうえお<!-- あいうえお --><![CDATA[あいうえお]]><em>あいうえお</em>あ<em>いうえお</em>あ<a>いうえお</a></p>

という入力があった時,どんな答えが返ってきてほしいですか?

この回答への補足

<a>タグに属性は付いていない想定で大丈夫です。
宜しくお願いします。

補足日時:2008/10/07 20:17
    • good
    • 0
この回答へのお礼

aというタグ以外のタグは無いという想定で大丈夫です。

お礼日時:2008/10/07 20:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!