• ベストアンサー

正規表現で [ ] を探したい

正規表現の説明のサイトなど、調べてみたのですが、分からなかったのでお聞きします。 現在下記のようなテキストデータがあります。 []は半角カッコです。 ************* : [かきこ] あいうえお ばびぶべぼ [まみむめもI らりるれろ かきくけこ : ************* OCR処理をしている為、カッコ"]"が"I"大文字半角のアイになっている箇所があります。 その間違いを捜し当てたいのですが、 [ I I ] I I の3パターンあると思うのですが、それぞれを探せる正規表現を教えていただけないでしょうか? どなたかご教授願います。

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

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

今さらですが、#2 だと[ ]のパターンもひっかかってしまうので 書き直しておきます。  (\[[^I]*I|I[^\]I]*[\]I]) ■ 暇なので説明すると、全体的に  (A|B) 「AまたはBのいずれかとマッチング」するという構造です。  A : \[[^I]*I  B : I[^\]I]*[\]I] ■ [I A は [ と I に囲まれた [^I]* にマッチング。 つまり  [^I] : I 以外のあらゆる文字一字分 なので  [^I]* : I 以外のあらゆる文字0字以上 という意味ですから、  [ABCI ... 全部ひっかかる  [AICI ... [ から真ん中の I までひっかかる となります。 真ん中の部分を  [^\n]* : 改行文字以外の文字0字以上 などとしてやると、  [AICI ... 全体がひっかかる と最大範囲がひっかかるようになります。 ■ I] II B は、I と  [\]I] : ] または I どちらか一文字 に囲まれた [^\]I]* にマッチング。 つまり、  [^\]I] : ] と I 以外のあらゆる文字一字分 なので  [^\]I]* : ] と I 以外のあらゆる文字0字以上 なので、  IABC] ... 全体にひっかかる  IAIC] ... 最初に左の I から真ん中の I までひっかかり       次に真ん中の I から ] までひっかかる となります。 同じように真ん中を [^\n]* としてやると  IAIC] ... 全体にひっかかる となります。 ■ 任意の一文字を . で表現できる正規表現なら  [^\n]* → .* と書けるかもしれません。 Perl だと \W* とかになるのかな?

その他の回答 (2)

回答No.2

 [あいう]えおI から「[あいう]」のような最小範囲部分を調べたいなら  (\[|I)[^\]I]*(\]|I) 「[あいう]えおI」のような最大範囲を調べたいなら  (\[|I)[^\n]*(\]|I) 行頭(^)、行末($)にあるのがわかってるなら  ^正規表現$ とします。 

  • apricotgx
  • ベストアンサー率22% (20/88)
回答No.1

秀丸エディタで以下の文字列で正規表現の検索が出来ました。 \[.*I I.*\] I.*I

関連するQ&A

  • 正規表現について

    正規表現について質問をさせていただきます。 VB6.0にて正規表現を使用し、入力された文字のチェックを行っていますが どうしてもうまくいきません。 チェックしたい文字は A(半角アルファベット大文字1文字)または AAA(半角アルファベット大文字3文字)または (AAA)(半角カッコつき半角アルファベット大文字3文字)で 上記3パターン以外はエラーとしたいと思っています。 パターンは下記のように作成したのですが "(^[\(][A-Z]{3}[\)])|(^[A-Z]{1,3})" A、AAA、(AAA)以外でもA(AA)やAAAA等も正常ケースとして通過してしまいます。 パターンをどのように作成すればよいか教えて下さい。 よろしくお願いします。

  • 正規表現で単語以外に使われている文字を検索した

    タイトルどおりなのですが、英文のテキストがあり、 OCR処理をしているので、数字のゼロがオーになっている箇所があります。 その部分を検索したいのですが、 正規表現で単語以外に使われている文字(オーやエルなど)を 検索する方法というのはありますでしょうか? いろいろな正規表現サイトを見て勉強はしてみたのですが、 どうしても作ることができず質問させてもらいました。 どなたかご教授願います。

  • 正規表現の後方参照

    PHPにおいての、正規表現の後方参照について教えて下さい。 aaaaa ( (pattern1)(pattern2)(pattern3) )bbbbb このような正規表現において、pattern1=$1、$pattern2=$2、pattern3=$3ですが、 外側のカッコ全体を参照する方法はありますでしょうか? よろしくお願いします。

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

    Excel2000-VBAにてマクロ作成中です。 以下のような処理を正規表現を使用して一発で実行させたいのですが、 正規表現に指定するパターンがわかりません・・・。 どなたがご存知でしたら教えて下さい。 やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、 さらに連続している半角スペースを1つに置換したい。 スペースを半角に統一することは、Replace関数で可能かと思っています。

  • 正規表現を教えてくだくさい

    ReqularExpressionValidatorを使用して 正規表現で フリーコメントのテキストボックスに  < か > のカッコが入っているとエラーとなるように 設定をしたいのですがどのような正規表現でできるでしょうか? 教えてください。

  • 正規表現を教えてくだくさい

    正規表現で フリーコメントのテキストボックスに  < か > のカッコが入っているとエラーとなるように 設定をしたいのですがどのような正規表現でできるでしょうか? 教えてください。 現在、この<>が入って保存ボタンを押すと ページエラーと下にでるのですがどこのエラーかわからないので このような正規表現を使いたいのですが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現でつまずいています

    お世話になっております。 VB2005を使っていますが、正規表現でつまずいています。 日付を表すデータとして、以下のような2つのパターンがあります。 Date: 02-apr-2010   ← : と 02の間に半角スペースがあります。 Date:13-Jan-2010 00:12:14 それぞれから年月日のデータのみを取り出すために正規表現を組んでみましたがうまくいきません。 "Date:\s*(?<date>.*)$|\s.*" $|\s.*  で意図したところは、文字列の最後 or スペースが1個と任意の文字が続く、というものです。 正しい表記方法をご指示いただければ幸いです。 よろしくお願いいたします。

  • 【正規表現】HTML5のpattern属性について

    HTML5のpattern属性で半角英数記号を指定するにはどう記述したら良いですか? HTMLやCSSの学習をしています。 正規表現についてはほぼ分かりません。 (1)ユーザーIDやパスワード入力フォーム半角英数記号のみの入力を処理する場合、type属性は”text”でいいのでしょうか? (2)pattern 属性に使う正規表現はほぼ理解できません。自分なりに調べてみたのですが、以下のような記述だと_アンダーバーや@マークなどの記号は識別できないのではないかと言われました。 また入力文字数制限は正規表現でも出来るようですが、以下のように自分でもわかるminlength, maxlengthで記述しようと思っていまがこれで大丈夫なのでしょうか? サンプルとして以下のように記述してみました。 type属性や、「半角英数記号」の入力文字など正しい書き方を教えてください。 よろしくお願いします。 <input type="text" name="username" pattern="^[0-9A-Za-z]+$" minlength="4" maxlength="50">

  • 正規表現

    正規表現で次の文字列を認識する方法を教えてください 1. (000) (999) ()でくくられている3桁の数字。カッコを含みます 3桁の数字文字列だけなら'[0-9][0-9][0-9]' ?? 2. [あああ] (あああ) いあああ+ rあああ> 文字列'あああ'の前後の任意の文字、半角、全角両方OKを含む5文字 文字列がカッコの場合もあり

  • 正規表現での空白文字チェックについて。

    VB2005環境です。 正規表現を用いて、以下の3パターンのチェックをしたいと 思っています。 A.半角のみカナ許可(半角スペースも許可) B.全角のみカナ許可(全角スペース許可) C.全角&半角カナのみ許可(スペース許可) Cのパターンは^[ァ-ヶ\uFF61-\uFF9F\s]+$のように 記述してみましたが、\sでは全角、半角問わずに スペースであればよしとしてしまうようで、A、Bの パターンが実現できません。 探してみた限り、半角全角スペースを区別する正規表現が 見つからなかったのですが、そのような表現がありましたら ご教授いただけないでしょうか?

専門家に質問してみよう