• 締切済み

特定の文字列を取り出したい

秀丸エディタの正規表現などを使えば可能だと思うのですが、 あるファイルに以下のような記述があったとして <table><tr> <td>abc1@abc.jp</td> <td>abc2@abc.jp</td> <td>abc3@abc.jp</td> <td>abc4@abc.jp</td> </tr></table> タグの中身の文字列だけを取り出して abc1@abc.jp abc2@abc.jp abc3@abc.jp abc4@abc.jp というテキストを作りたいのですが、 何か良い方法はありますでしょうか?

みんなの回答

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.3

正規表現の最小(最短)マッチを使うのが一番いいと思いますよ。 <.*?> をNULL文字列に置換すればいいんじゃないかな?

pugera542
質問者

お礼

タグのみ削除するということですね。 ありがとうございます。また書き方が悪かったのですが、 タグ以外にも、必要な文章のほかにも様々な文字列があるんです。 つまり だらだら~略~ <td>abc1@abc.jp</td> だらだら~略~ という行が何行も続いている。 ですので、自分の希望としては 「アットマーク前から<td>タグの直前まで+@+アットマーク後から</td>タグの直前まで」以外を削除 としたい正規表現をお教えして欲しいのです。 そのような複雑なやり方はありませんでしょうか?

  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.2

No1の補足ですが.TXTを.HTMLに変えるということです。

  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.1

そのファイルをブラウザで表示させてしまえば あとはコピペでいけるんではないですか?

pugera542
質問者

お礼

すみません例として簡略化しすぎました。 これは複数のHTMLファイルからgrepで抽出したある行だけを 抜き出したファイルで、普通にブラウザでは開けません。 また非常に大量のデータが含まれて居ます。 アットマークの前後の文字は どんな文字が入るか、どの程度の長さかは分かりません。 になります。

関連するQ&A

  • 特定の文字列に囲まれた文字列を複数同時に抽出したい

    ホームページのソースの中から特定の文字列(タグ含む)に囲まれた文字を 複数同時にテキストファイルに抽出したいです。 例えば <table><tr><td width="100">い</tr></table> <table><tr><td width="88">ろ</tr></table> <table><tr><td width="55">は</tr></table> <table><tr><td width="100">にほ</tr></table> <table><tr><td width="55">へと</tr></table> とあった場合、「width="100">」と「</tr>」を指定して、 「い」と「にほ」をテキストファイルに書き出したいです。 何か良いソフトはないでしょうか?

  • (秀丸)正規表現で、特定文字列含む<~>範囲を選択

    お世話になります。 (秀丸の)正規表現について教えてください。 たとえば、テキストファイルに、1行、 ”<abc>文字列1です><abc>文字列2です><abc>文字列3です>(ここで改行)” という文字列が存在しています。 それを対象として、 (秀丸の)正規表現を利用し、 ”<abc>文字列2です>”だけをマッチさせたいのですが、 試しに、(秀丸の)正規表現で、 <abc.*文字列2.*?>  ←(なお、実際の記号は半角(.*?等)で、それぞれ入力しています・・・) で検索実行したところ、 ”<abc>文字列1です><abc>文字列2です>” として、 前の方に、マッチして欲しくない、 ”<abc>文字列1です>” までがマッチしてしまっている状況です。 そこでご質問なのですが、 上記におきまして、(秀丸の)正規表現を利用して、 ”<abc>文字列2です>”だけをマッチさせるには、 どのようにすれば、よろしかったでしょうか? (ちなみに秀丸は、2013年12月10日(火)現在の  最新バージョンVer8.32を利用しています) 以上になります。 宜しくお願いいたします。

  • 秀丸エディタで文字列の置換をしたい

    秀丸エディタの正規表現についてお教えください。 やりたいこと: 対象の文字列を含んでいない行を削除したい 例:defのみを削除したい abc def def abc ↓ abc abc どのようにすれば実現できますでしょうか? よろしくお願いします。

  • <td>中の文字列に<p>は必要?

    テーブルの<td></td>タグ中の文字列は、<p></p>タグで囲むべきでしょうか? <p></p>タグで囲まない場合の例: <body> <table border="4" width="250"> <tr> <td align="left"> ここの文字について質問しています。 </td> </tr> </table> <p></p>タグで囲む場合の例: <body> <table border="4" width="250"> <tr> <td align="left"> <p> ここの文字について質問しています。 </p> </td> </tr> </table> </body> どちらが、良いのでしょう? よろしくお願いします。

    • ベストアンサー
    • HTML
  • 何度も出現する文字列AAのうち、3番目と4番目のAAの間にある文字列を得たい

    以下のようなHTMLから、 <tr><td>AAA<td>BBB<td>CCC<td>DDD<td>EEE<td></tr> CCC という文字列だけを取り出したいとき、Perl、または 正規表現ではどのように記述したらよいのでしょうか?? Index関数を使ってみたのですが、うまくいきませんでした。 アドバイスをよろしくお願いします。

    • ベストアンサー
    • Perl
  • 文字列型をDOM型に変換

    text = "<table id="table1"><tr><td>a</td><td>b</td></tr></table>"; このような文字列データがあるときに、 これをDOM形式に一発変換することは可能でしょうか? document.createElement() element.appendChild() element.setAttribute() 等のメソッドを使って、地道に作らなくてはならないのでしょうか? ご存知の方がいらっしゃったら、回答よろしくお願いいたします。

  • 特定の文字列を挿入

    テーブルのセルに特定の文字列を挿入する方法は御座いませんか? 例えば、 HTMLファイル <html> <head> </head> <body> <table> <tr><td> (1) </td><td> (2) </td></tr> <tr><td> (3) </td><td> (4) </td></tr> </table> </body> </html> とあった場合 JavaScriptファルには (1)に挿入する内容 (2)に挿入する内容 (3)に挿入する内容 (4)に挿入する内容 を書いてHTMLファイルに書き出しをしたいのです。 document.write('');を使って書き出す方法は知っていますが、指定した場所に貼り付けたい場合複数ファイルが必要になりますよね? それでは不便なので、JavaScriptファルは外部化で1つのファイルにし、指定箇所に文字列を挿入する方法を教えてください。 printを使えばいいんでしょうか?

  • ある法則に従った文字列を抜き出す方法

    以前、ある法則に従った文字列を抜き出す処理をゴリゴリ頑張って作ったのですが、 正規表現で1発で対象文字列を抜き出す事は出来ないのか?と思いました。 しかし、正規表現をそのパターンの時どう記述すると実現出来るのか分からず断念しました。 例えば 1.あいうえお((abc:えー|びー))かきくけこ 2.あいうえお((abc:えー))かきくけこ 3.あいうえお((abc:えー|びー|しー))かきくけこ 4.あいうえお((abc:えー|びー|しー))かきくけこ((abc:でぃー)) こんなのがあった時、パターンとして「((abc:」から「))」の間の文字列を 取得したいです。 1.の時は「えー|びー」、2.の時は「えー」、3.の時は「えー|びー|しー」、 4.の時は「えー|びー|しー」と「でぃー」を、その正規表現にマッチする文字列だとしたいのです。 「((abc:」、「))」の間の文字列長は可変です。 どなたか上記を実現する正規表現をご教示下さい。 正規表現でマッチさせるからには「((abc:」、「))」という文字列もマッチした文字列として 取得するでしょうが、それは後処理で削る事になるので何の問題もありません。

    • ベストアンサー
    • PHP
  • 正規表現でマッチさせたい文字列の指定方法

    正規表現でマッチさせたい文字列の指定方法について こんにちは。正規表現について教えてください。 秀丸エディタでgrepする時に先頭行に 『ファイル名(行数): 』という文字列が 先頭行に入りますが、これを正規表現を使用して消したいと思っています。 具体的には以下のような表現ですが、どのように指定するのが正しいでしょうか。 いくらかテストしているのですが、なかなかうまくできず困っています。 消したい文字列 test.log-110411-01.bak.text(38): よろしくお願いします

  • セルをクリックして文字列をコピーしたい

    テーブルのセルをクリックすると、指定された文章をクリップボードにコピーするようにしたいです。 <table> _<tr> __<td class="time">12:00</td> __<td class="name"><a href="hoge">suzuki</a></td> _</tr> </table> 上の例では、12:00のセルをクリックすると、「あいうえお」という文字列をクリップボードにコピーするような感じです。 現在CSSでは td a{ display:block; width:100%; height:100%; text-decoration: none; } と設定しています。 どうやらJavascriptを使えばできるようなのですが、Javascript事態全く使ったことがないのでどう記述すればいいかがわかりませんでした。 調べてみたところ、inputタグにonclick="clipboardData.setData('text',this.value)"と入力すればできると聞きました。ですが、これはinputタグなのでこれはフォームのボタンをクリックした場合にコピーするような内容ですよね。 そうではなく、リンク先をクリックするようなのと同じような感じでセルをクリックすると、文字列をコピーできるような方法が知りたいのです。 できれば記述の方法も教えていただければ助かります。 どなたかご教示のほど、どうかよろしくお願いします。

専門家に質問してみよう