• ベストアンサー

js 正規表現

下記のhtmlをinnerHTMLで取得しました。センチメートルからtd閉じタグの<の一つ前までの文字を削除したいです。str.replace(/セ.+</g<, ''<") こちらを試しましたが削除できませんでした。 よろしくお願いします。 "<td>22センチメートル 234234; ? (概算)34 </td> <td>23センチメートル 234234; ? (概算)93 </td> <td>24センチメートル 234234; ? (概算)645fail </td> <td>25センチメートル 234234; ? (概算)627 </td>"

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

いろいろやり方はあると思うんですが これではどうでしょう? str = str.replace(/セ[^<]+</g, "<"); セ:そのまま [^<]+:文字「<」を含まない文字列 <:同じくそのまま あとgオプション

natyo4235
質問者

お礼

ご回答ありがとうございます。 [^<]で否定しないと途中の<にマッチしないんですね。削除できました。助かりました。

関連するQ&A

  • JavaScriptの正規表現/?<.+?>/について

    strからHTMLのタグを取り除いた文字列をxにしまうため var x=str.replace(/<.+?>/g,""); を使うそうですが /<.+?>/g をなぜ使うのかが分かりません /<.+>/g がまずいのは分かりますが・・・・ 教えていただければ幸いです

  • 正規表現で特定のタグを除去・削除する方法を教えてください。

    正規表現で特定のタグを除去・削除する方法を教えてください。 actionscript3で正規表現を使いタグを除去したり削除したりしようとしたのですが うまく行きませんでした。 タグ削除で考えた方法1 str.replace(/<input (.*)\">/g,''); すり抜けて最後のエレメントまで消滅しました('A`) タグ削除で考えた方法2 str.replace(/<input([a-zA-Z0-9\.\:\/\s]*))\">/g,''); 何も起こらない('A`) タグ削除で考えた方法3 str.replace(<option value=([a-zA-Z0-9]+|[\.\:\/\s]+)>([一-龠]+|[ぁ-ん]+|[ァ -ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+)<\/option>); 何も起こらない('A`) 除去に至っては手付かずです。 タグ削除の方法が分かれば元のコンテンツを参照させて うまく行きそうだなと思いました。 ポイントとして属性などを一つ一つ記入する手間を省きたいです 何方かレクチャーしていただけますか。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • preg_replaceでの正規表現について

    お世話になります。 ereg_replace で書いた正規表現による置換処理を、 preg_replace に置き換えようとしています。 (preg_replaceの方が処理が速いとマニュアルにあったので) ところが、preg_replaceでの正規表現検索がうまくいかないで困っています。 基本的には、ereg_replaceの正規表現部分を//で囲んでいるだけです。 具体的には、下記のような処理を書いています。 間違いがあれば、ご指摘いただけましたら幸いです。 //### うまくいっている ereg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='\{dokuji tag\}.+\{_dokuji tag\}'; $replace=''; $html=ereg_replace($search,$replace,$html); //不要部分の削除 //### うまくいっている ereg_replace のパターン ここまで ### ↓ //### うまくいかない preg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='/\{dokuji tag\}.+\{_dokuji tag\}/m'; $replace=''; $html=preg_replace($search,$replace,$html); //不要部分の削除 //### うまくいかない preg_replace のパターン ここまで ### //### 置き換えるソース('template/temple.html') ここから ### <!-- {dokuji tag} --> <tr> <td nowrap><strong>タイトル:</strong></td> <td> <input type="text" name="name" size="80" value="{name}" /> </td> </tr> <!-- {_dokuji tag} --> //### 置き換えるソース('template/temple.html') ここまで ### よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • C#で正規表現

    C#で、HTML形式で書かれた文字列から情報取得したいと思っています。 その際に使う文字列判別のための正規表現についてご助言ください。 現在、Regex.Replaceで、<>カッコに囲まれた部位は削除、残りの文字列を解析して情報取得しています。 これをHTMLのテーブル、つまり<td></td>※で囲まれた文字列を取得するよう仕様変更したいと思っています ※実際は<td width=・・・・>などとなります。 このサイトのページ最下部のC#ソースにありますような書き方をしようと思っています。 http://dobon.net/vb/dotnet/string/regexmatch.html 以上が、質問概要です。 私が正規表現を書いたとき分からなかった点は、 1.”(半角のダブルクォーテーション)の扱い・指定方法 2.<td></td>で囲まれた、というような表現の具体的な書き方 3.<td></td>内には<font>などのさらに<>で囲まれた部位が混入、その対処方法 参考までに、処理対象となるサイトはこちらになります。 http://www.traders.co.jp/stocks_data/data/brand_move/brand_move.asp 以上よろしくお願いいたします。

  • PHPの正規表現で【】内を文字列ごと削除

    あいうえお【かきく】けこさ。【しすせそ】 といった感じの文字列を、【かきく】や【しすせそ】を削除して、 ”あいうえお けこさ。” としたいのですが・・・ $str = preg_replace("【.*】"," ",$str) とすると、 あいうえお ってなっちゃうし、 $str = preg_replace("/【.{1,5}?】/"," ",$str) とかやってみても上手く行かず。 はて?「/」は何を意味するのだろう。とか思いながら試行錯誤してはみてるのですが・・・ どなたかご教授くださいませんでしょうか。 お願いします。

    • ベストアンサー
    • PHP
  • [javascript]</TDと</TR以外で始まるHTMLタグを消去する正規表現

    HTML形式の文字列から</TDと</TRで始まるタグ以外を消去したいのですが、以下の記述ではうまくいきませんでした。 test = test.replace(/<\/T[^RD][^>]*>/g,""); どのように記述すればよいでしょうか?

  • perlでの正規表現について

    文字列のなかの"<タグ>(アルファベット1文字)"すべてに対して置換処理をさせたいのですがうまく動作しません。 現在はこう記述しております。 $str=~ s/(~<(.*?)>\w)/置換文字列/g; 良い方法があれば教えていただけると助かります。

  • 正規表現でのマッチを複数取得したい

    正規表現にて、文字列のhtmlタグ部のみを配列にして取得したいのですが、初めにマッチする1つしか返り値を取得できません。 ----ソース--------------------- $this->target_str <<<EOS <test1>aaa</test1> <test2>bbb</test2> EOS; preg_match ( "/<.*?>/imsu" , $this->target_str, $RES_ARR ); ------------------------------- 上の例だと、 $RES_ARR[0] => "<test1>" となり、残りのタグは取得できないのです。 google検索にて発見した、'マッチした後も続けて検索する'というオプション'g'をつけてみたのですが、'g'に対してエラーが出てしまいます。 どなたか解決策をお持ちの方いらっしゃいましたらよろしくお願いします!

    • ベストアンサー
    • PHP
  • replaceで正規表現を利用したい

    ・置換前文字列 … 9月15日(土)12時16分準備 ・置換後文字列 … 2012-09-15 12:16:00 ■質問1 ・(土)を削除する方法を教えてください ・time = time.replace(/(*)/,"");? ■質問2 ・0がついていなければ、先頭に0を付与する方法は? ■質問3 ・まとめてやる方法はあるでしょうか?  下記みたいにひとつひとつやる方法しか思いつかないのですが…  time = time.replace("準備","");  time = time.replace("月","-");  time = time.replace("日","半角空白");  time = time.replace("時",":");  time = time.replace("分",":00");

  • matchの中の正規表現の記載について教えて下さい。

    matchの中の正規表現の記載について教えて下さい。 文字列の最後に「,」「.」があった時にこれを削除するために下記のようにプログラミングしてみました。 上手い方法を思いつかなかったので、最後に「,」があったときに「del」を文字列の最後に足して、replaceを用いて削除することをにしました。 削除したい文字を、一つずつ書いて削除させることは出来たのですが、まとめて配列化して下記のようにしてみたのですが、エラーが出てしまいました。また、削除したい文字はたくさんあるため、配列化もしくはそれに近いことが出来る必要があります。 正しくはどのように記載するのでしょうか? また、文字列最後の指定した文字だけを削除するもっとスマートな方法がありましたら、教えていただけないでしょうか。よろしくお願いします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー var t2 = "KJANN B CVA,"; delw = new Array("," , "."); for (i=0; delw[i]; i++){ if (t2.match(/delw[i]$/)){ t2 += 'del'; t2 = t2.replace(",del",""); } } ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー