人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptの正規表現について質問です。
あるサイトのHTML文章全文から、タグに含まれていない文字列の中の特定の文字を検出して、置き換えたいのですが、なかなかうまくいかずに苦労しております。
<タグ1>ここにある文字列の中の一部<タグ2>ここにも文字列があったりします。</タグ2>こんなところにも文字列はあります</タグ1>

上記の場合、たとえば「文字列」という文字とマッチさせて入れ替えたいのです。
「文字列」は例えばmojiという変数にて指定し、これをhemojiという変数にて置き換える作業を全文に施したいのです。
どなたか、教えてください。正規表現、毎回苦闘しております。

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答3号
ベストアンサー

こういう場合、無理に正規表現一発と考えず、「[<>]」でsplitしてforかreduceで復元しながら内部フラグでタグ内外判断したらどうでしょうか。


匿名質問者さんのコメント
>と<に囲まれた文字列の中の文言をマッチさせることが、正規表現でこれだけ難しいということなのでしょうか。 どなたも、解決案がでないとは思ってもみませんでした。 正規表現、使えそうで使えないですね。

匿名回答3号さんのコメント
難しいというか面倒臭いというか。あと例外的な条件の対応とかあんまり良くない気がする。 一応書いておくと多分 >|| /文字列(?=[^>]*(<|$))/g ||< かな? 置換対象以外の部分が条件に入ってくる場合は向かない場合が多いですね。 正規表現って置換のためのものじゃなくマッチのためのものなので。

匿名質問者さんのコメント
ありがとうございます。 こういう書き方があるんですね。 正規表現をモノにしたら、いろいろ便利なんですが、難しいです。 =の使い方を知りませんでいた。 ありがとうございます。勉強になりました。

匿名質問者さんのコメント
追伸; この場合、全文から、まず改行を削除してしまい、そのあとにこのマッチを行えば例外処理も必要なさそうです。 改行を放置すると、万が一、class名などにマッチさせる文字列が使われていて、<>の途中で改行を行うような、変なHTMLだった場合、思わぬマッチングがされてしまうようですので。 これで、めどが立ちました。 ありがとうございました。先読みの x(?=)という書式も覚えました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ