• 締切済み

正規表現について

t1t あいうえお t2t かきくけこ t3t さしすせそ という文章があったとして t2tからt3tの直前まで正規表現で抽出したいので、 t2tとそこから「改行+t」以外の文字の連続 を正規表現で表したいと思い t2t[^(\nt)]* としましたがだめでした どなたかご指導ください

みんなの回答

回答No.3

まず、\nはWordの改行にマッチしません。 Wordの改行(vbCr)は debug.print asc(vbcr)とやると10進数で13と 出ますんで、16進数でdとなり、 vbscriptの正規表現で\x0dと表せます。 で、もう1点が問題なんですが、 vbscriptの正規表現では後方参照ができないみたい? パターン中での後方参照は可能なんですが、 それだけ抜き出すというのが、できないようです。 ですので、まわりの文字と合わせて抜き出し、 置換なりするしかないと思います。

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

VB 使って、 普通のテキストファイルに 対して行ってるのですか。 あるいはWord等他の アプリケーションのファイル? できれば、VBのその部分のコードを 記載してほしい。 そのファイルどのように読み込んでるかとか。

yambal-net
質問者

補足

VBを使って普通の文字列に対して行っています。 (Wordの全文を変数「検索対象」に読み込み、 正規表現を代入している「検索表現」で検索します) ソースは下記のような感じです Sub test() Dim 検索結果() 検索対象 = ActiveDocument.Content 検索表現 = (正規表現) Set 検索obj = CreateObject("VBScript.RegExp") 検索obj.Pattern = 検索表現 検索obj.Global = True 検索obj.IgnoreCase = True Set 検索結果列obj = 検索obj.Execute(検索対象) 列 = 0 For Each 検索結果obj In 検索結果列obj   列 = 列 + 1   ReDim Preserve 検索結果(列)   検索結果(列) = 検索結果obj.Value   MsgBox 検索結果(列) 'テスト Next End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

正規表現を使用しているソフトはなんでしょうか。 perl,awk,sed等があり、ソフトにより正規表現の規約も異なります。 OS名、ソフト名(日本語対応かどうかも含めて)を提示していただけると、よい回答が得られると思います。

yambal-net
質問者

補足

VBの VBScript.RegExp を使用しています。

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

関連するQ&A

  • 正規表現で固定長に揃えたい

    正規表現で固定長に揃えたい 秀丸など正規表現のできるエディタを使用し リターンを含まない長い文字列を固定長にしたいです <例> あいうえおかきくけこさしすせそたちつてとなにぬねのはひふ ↓10文字ずつ改行 あいうえおかきくけこ さしすせそたちつてと なにぬねのはひふ よろしくお願いします

  • 文字列を含まないという正規表現は?

    お世話になります。 例えば、文字「a」を含まないという正規表現は、 "[^a]" となりますが、文字列「abc」を含まないという正規表現はどうなりますでしょうか? "[^abc]" ではだめでしたし、 "[^(abc)]" でもだめでした。 また、改行などの制御文字を含めたどんな文字でもいいという正規表現はどうなりますでしょうか? ".*" では改行などが含まれるときはだめでした。 どうかご教授のほどよろしくお願い致します。 次のサイトは参考にしたサイトです。 正規表現の解説 目次 http://www4.ocn.ne.jp/~kaerume/k2e/regex_top.html#mnu_top

  • 改行や、タブを含む正規表現の方法

    HTMLからある部分抜き出す時、 たとえば、あるソースから <title>なんたら</title> という言葉を抽出する場合、 $htmlに全ソースが格納されていると仮定して 単純な正規表現で preg_match('/<title>なんたら</title>/', $html, $matches); といえれると、"<title>なんたら</title>"という文字が出せます。 ところが <title>   なんたら </title> のような改行やらタブが含まれていると抜き出すことができませんでした。 いろいろ調べますと、文字エスケープシーケンスというものがあり \nは改行 \tタブと書いてあるサイトがありましたので preg_match('/<title>\n\tなんたら\n</title>/', $html, $matches); という風に記述してみました。 しかし、それでも改行とタブの含まれた<title>から 文字を抜き出すことはできませんでした。 改行とタブの含まれた<title>から 文字を抜き出すには、どのような記述をすれば良いのか ご指導お願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現で分かりません

    例えば以下のようなパターンの正規表現チェックがあるのですが、 どのようなものを意味しているか分かりません。 教えていただけますでしょうか。 よろしくお願いします。 以下の情報は調べたのですが。 +(プラス)・・・直前の1文字の1回以上の繰り返しを表現 . (ピリオド)・・・改行コード以外の1文字にマッチするか否か [ ](大括弧)・・・囲みの中に書かれた任意の1文字にマッチするか否か ^([^ ]+) +[^ ]+.+S3.lzh

  • 正規表現についてお教え下さい

    正規表現についてお教え下さい。 )以外の全ての文字列(改行・Tab・空白等含む)の1回以上の繰返しという記述は正規表現ではどのような記述になるでしょうか? NoEditorで下記のような条件でgrepしようとしたのですがうまくいきません。 [[^[^\)]] \t\n\r\f]+ 具体的には下記のような5行があった場合、以下のような条件で1、2、3行目を抽出できるということを想定しています。 条件:AAA )以外の全ての文字列の1回以上の繰返し \) ※現状の条件の記述はAAA[[^[^\)]] \t\n\r\f]+\) 1行目 AAAあ(aaa) 2行目 AAA あ(aaa) 3行目 AAA あ 4行目 (aaa) 5行目 AAA)

  • |。ってなんですか? 正規表現

    正規表現の学習中です。読んでいる本の中に次の式がありました。  (?<=^|。)[^。]+。 日本語の文章の中から一文を抽出するための正規表現です。  。以外の文字がダーッと連なった後に。が来る文字列 とのことです。  [^。]は。以外の文字  +はそれが1個以上ある ですから  [^。]+ は  。以外の文字が1個以上ある という意味です。 その後に。が付きますから、  [^。]+。 だけで  。以外の文字がダーッと連なった後に。が来る文字列 ということになります。 では  (?<=^|。) の意味は何でしょう。  (?<=なんたら) は後方参照を意味しますから、 ^|。 のすぐ後に [^。]+ が続くと言いたいのでしょうか。 だとすると  ^|。 が問題です。  ^もしくは。 という意味なら、^は正規表現で記号として使われている文字ですから、  \^|。 と表現されそうなものです。 それに、。は文末でしか利用されない文字ですから、これに注目して検索を行うというのは理解できますが、^は日本語でなんら特徴を持つ文字ではありません。  ^もしくは。 という理解は間違いでしょう。 それでは^を記号として考えるとして、その前後を[]で囲んでいないから、この^は文字列の先頭を表すのでしょうか。そうすると件の正規表現は  先頭の|。のすぐ後から。以外の文字が連なった後に。が来る文字列 という意味になります。日本語の一文を抽出する正規表現という解説にかなり近づいてはいます。 しかし  |。 とは一体何? |はorを意味する記号ですが、  何とか or 。 という意味でしょうか。 でも「何とか」は「何とか」なりに何か文字表現がなされていても良さそうですし、それに  先頭の「何とか」または。のすぐ後から・・・ という解釈は意味不明。  |。 はどのように解釈すべきなのでしょうか。 お手数をお掛けします。

    • ベストアンサー
    • Perl
  • 正規表現についての質問

    正規表現を使って、文字列を抜き出したいのですがどうすればよいでしょうか? 対象となる文字列→<ここは文章>##あいうえお[1]:"test.jpg"##<ここは文章> 抜き出したい文字例→##あいうえお[1]:"test.jpg"## の##で囲まれた箇所です。 正規表現ど素人なため、どなたかご教授くださいm(_)m

    • ベストアンサー
    • PHP
  • VBAの正規表現について教えてください

    文章に含まれる下記文字を抽出したいのですが、書き方を教えてください。 抽出したい文字 「#hogehoge 」  の「#」から最後の「半角スペース」までです。 上記文字が含まれている文章は こんにちは #aiuoeo さん、#kakikukeko さん、私は・・・・ #hogehoge 先日の・・・ などの文章です。 先頭が必ず#とは限らず、最後も半角スペースではないので、 ^#.*$/sなどではありません。 また、1回とは限らず複数回でてくることもあります。 正規表現で書くことは可能なのでしょうか。 初歩的な質問で大変申し訳ありませんが、どうぞ宜しくお願いいたします。

  • 正規表現でOR

    正規表現について困っています。 $text = '&a=000&b=111&c=222'; mb_ereg('&b=(.*?)&', $text, $result); 上記のように、スタートを&b=とし、エンドを&とすれば、'b=111' の中の '111'  は抽出できます。 ところが、$textには次のようなパターンもあります。 $text = '&a=000&b=111'; この場合、エンドを示す文字が文末のために存在しませんので、 mb_ereg('&b=(.*)', $text, $result); とやれば抽出できます。 やりたいことは、上記の2つのパターンに対応する正規表現を1行で記述したいのです。ORを表す表現を調べていろいろ試したのですが、うまくいきません。 よろしくご指導のほどお願いいたします。

    • ベストアンサー
    • PHP
  • PHPの正規表現の利用

    今現在、PHPの掲示板を作っています^^ そこで、最近携帯の掲示板よく見かけるようになった#+文字(#あいうえお)で文字の色を変えるやつを自分の掲示板にも付けようと思いました。 単純な話、 #あいうえお(ここに改行があります) などをレスの中から見つけ出し下記のようにすることです。 <font color="red">#あいうえお</font> いろいろ調べていった結果、正規表現を使えばよいということがわかりました! いろいろと試しましたが全くできませんでした(T_T) どなたか正規表現に詳しい方教えてください(^^♪

    • ベストアンサー
    • PHP