• ベストアンサー

正規表現の指定方法を教えてください。

VB.NETなのですが、変数txt内にWebページの ソースを代入して、タグを削除したいのですが、 タグを削除するところまで出来たのですが、 1行以上連続した改行をなくしたいのですが、 どのような書き方をすれば良いでしょうか。 改行をなくす書き方は下のようになると分かったのですが、 1行以上連続した場合の指定の仕方がわからないので、 ご教示頂きたいです。 よろしくおねがいいたします。 txt = System.Text.RegularExpressions.Regex.Replace(txt, "^\n", "")

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

  • ベストアンサー
回答No.2

.net Frameworkの場合、 ^や$はデフォルトの設定では行頭、行末ではなく、 文字列の先頭、末尾を表すようです。 そのため、RegexOptionsでMultiLineを指定する必要があります。 また、考え方としては改行コードが2つ以上あれば1つにまとめると考えた方が良いので、以下のように直せばよいと思います。 txt = System.Text.RegularExpressions.Regex.Replace(txt, "\n{2,}", "\n", RegexOptions.Multiline) 参考URL: 根拠はこちら: http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconatomiczero-widthassertions.asp Replaceの使い方はこちら: http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemtextregularexpressionsregexclassreplacetopic10.asp

popopompom
質問者

お礼

ご回答ありがとうございます。 教えて頂いたとおりで実現することができました。 このような書き方になるとはとても思いませんで、 とても助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#39970
noname#39970
回答No.1

VBの正規表現はどうだか知らないけど一般的にはこうかも ^[\n]+

popopompom
質問者

お礼

ご回答ありがとうございます。 こちらも参考にさせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C#で空白行を削除する方法

    C#でテキストを読み込んで、文字列型の変数に代入、そしてtextBoxに表示させます。その中にいくつかの空白だけの行があります。その空白行だけを削除する方法がわかりません。わかる方がいらっしゃいましたらよろしくお願いします。 FileStream file = File.Open(@"C:\text.txt",FileMode.Open); Encoding enc = Encoding.GetEncoding("Shift_JIS"); StreamReader reader = new StreamReader(file,enc); string A = reader.ReadToEnd(); A = Regex.Replace(A,"\r\n",""); textBox1.Text = A; とすると全ての改行が削除されてしまいます。 正規表現をうまくつかうと出来るような気がするんですが・・・

  • WSHの正規表現について

    WindowsXPのCACLSコマンドの出力結果(テキストにリダイレクト)に改行や復帰が入っていて、空行の削除をしたいのです。 下記のプログラムを作ったのですが、復帰コードが 入っている箇所がとれないのです。どなたかご教授お願い致します。。。 Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.GetFolder("C:\WORK") Set regEx1 = New RegExp srhStr1 = "^ *$" regEx1.Pattern = srhStr1 regEx1.Global = True regEx1.IgnoreCase = True Set TextFile = fso.OpenTextFile("cacls結果.txt") Do Until TextFile.AtEndOfStream tmpLine = TextFile.ReadLine If regEx1.Test(tmpLine) Then else srhLine = srhLine & tmpLine & vbNewLine End If Loop WScript.Echo srhLine

  • 改行を含んだ文字列を正規表現で置換するには?

    正規表現で、改行を含んだ文字列を置換しようと思っています。 例えば下の「infile.txt」にある aaa bbb という(2行にわたる)文字列を zzz という文字列に変換させたい訳です。 試しに「test.vbs」のようなコードを書いてみましたが、これでは上手く行きませんでした。 上手く変換されるようにするには、どうしたら良いでしょうか? ----------------------------------------------------- ○「test.vbs」の内容 Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:\infile.txt") Set outFile = fso.CreateTextFile("C:\outfile.txt") Set regEx = New RegExp regEx.pattern = "aaa\nbbb" repStr = "zzz" Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close ----------------------------------------------------- ○「C:\infile.txt」の内容 aaa bbb ccc

  • 正規表現の書き方を教えてください

    正規表現の書き方を教えてください 膨大なサイトデータに含まれる、忍者ツールズのアクセス解析タグを 複数行置換ツールを使って、一気に削除したいです 正規表現を使えば、以下のアクセス解析タグを削除できると思うのですが どのように正規表現を使って記述すれば、いいのかわかりません ・アクセス解析タグ中の「15695600k」 ・リンク先(http://futoko.jpnz.jp、kateikyousi.rentalurl.net) ・アンカーテキスト(不登校 高校、家庭教師) は、タグによって変化する変数です ■忍者ツールズのアクセス解析タグのソース例 http://analyze.ninja-web.net/ ■使用する複数行置換ツール http://www.vector.co.jp/magazine/softnews/060905/n0609051.html ※このツールでできない場合は、用件を満たすツールを教えていただけますと幸いです よろしくお願いいたします

  • VB.NET2003での正規表現

    VB.NET2003で開発しています。 フォルダ下にあるすべてのテキストファイルを読み込み 変換してフォルダコピーをするのですが、 置き換え条件ですが 「行頭(できればテキストファイルの先頭のみ)の■以外の■は直前で改行する」 例: 元テキスト ■こあら■たわし■まりも → ■こあら ■たわし ■まりも にしたいのです。 普通に strtext = strtext.Replace("■", vbCrLf & "■") とすると最初の■も改行してしまうのでそれを避けたいです。 アドバイスお願いします。

  • 正規表現(regex)でパラメータ付き文字列を置換したい

    あるページ内に次のようなjavascriptがあるとします。 javascript:test(1); javascript:test(2); javascript:test(3); javascript:test(4); これらを次のように一度に置換したいわけです。 test_1.txt test_2.txt test_3.txt test_4.txt 正規表現で置換するスクリプトを作っていますが、3行目の書き方をどうしていいかで困っています。 アドバイスお願いいたします。 ---- スクリプトサンプル ------- Set regEx = New RegExp regEx.pattern = "javascript:test\(.*\);" repStr = 「この記述方法がわからない」 Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop

  • ExcelVBAマクロでの正規表現の方法

    ExcelVBAマクロについて確認させてください。 下記のように読み込みたいファイルをフォームで指定して それを変数aに読み込ませています。 変数aから、半角で書かれた括弧つきの数字(1)~(99)またはは全角で書かれた括弧つきの数字 (1)~(99)の文字列を削除したいのですが、例として"(1)"を削除する場合、次のような命令文 a = Replace(a, "(1)", "")のような書き方でもいいのですが、正規表現を使って もっと効率良い書き方がありますでしょうか。 ぜひご教授下さい。 以上、よろしくお願いします。 ---------------------------------- Sub sample() Dim buf As String Dim a As String buf = Application.GetOpenFilename(FileFilter:="テキスト文書,*.txt", Title:="サンプル") 'フルパスも含めたファイル名をbufに代入 With CreateObject("Scripting.FileSystemObject").GetFile(buf).OpenAsTextStream '指定したファイルを開く a = .ReadAll 'テキスト文書の内容を文字列aに代入 .Close '指定したファイルを閉じる End With End Sub

  • 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
  • 正規表現

    Java 5.1 java.util.regex.Pattern java.util.regex.Matcher を用いてHTMLのTABLEを抽出したいのですが、ヒットしません。正規表現のパターンはどうしたらいいのでしょう? パターン: < *table.*?>[\s.]*?< */table *?> 検索対象: … <table border=1 width=200> <tr><th>AA</th><th>BB</th></tr> <tr><td>CC</td><td>DD</td></tr> <tr><td>EE</td><td>FF</td></tr> </table> … で、TABLEタグを含むTABLE全体を期待したのですが全くヒットしませんでした。 ちなみに * <table …>と</table>単体ではヒットします。 * ソースから改行文字を取り除いて一行テキストとした場合にはヒットします。 これらのことから、改行文字がマッチしていないことが原因かと思うのですが、パターンの正規表現についてご教授願います。

    • ベストアンサー
    • Java
  • 【正規表現】【javascript】CR、CR・LF、LF改行コードをLFにしたい

    CR、CR+LF、LFのシステムによって異なる3種類の改行コードを LFに置換したいです。 変数hogeに置換対象の文字列が入っているとして、 hoge.replace(/\r\n/g,"\n").replace(/\r|\n/g,"\n"); とreplaceを使って置換してみました。 うまくいってるようですが、replaceを二度使ってるところが、カッコ悪いなぁと思います。 replace一回ですむような方法がありましたら教えてください。

このQ&Aのポイント
  • EP-714Aを購入しましたが、縮小コピーの方法がわかりません。
  • コピーから応用画面の出し方がわからないです。
  • EP-714Aで縮小コピーをする方法を教えてください。
回答を見る