- ベストアンサー
正規表現での空白文字チェックについて。
VB2005環境です。 正規表現を用いて、以下の3パターンのチェックをしたいと 思っています。 A.半角のみカナ許可(半角スペースも許可) B.全角のみカナ許可(全角スペース許可) C.全角&半角カナのみ許可(スペース許可) Cのパターンは^[ァ-ヶ\uFF61-\uFF9F\s]+$のように 記述してみましたが、\sでは全角、半角問わずに スペースであればよしとしてしまうようで、A、Bの パターンが実現できません。 探してみた限り、半角全角スペースを区別する正規表現が 見つからなかったのですが、そのような表現がありましたら ご教授いただけないでしょうか?
- ginfix
- お礼率34% (330/962)
- Visual Basic
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
\s にはスペースだけじゃなくて、タブとか改行も含まれるんですが それはどういう扱いにするのでしょうか? 単に、半角スペースや全角スペースだけを除外したいという話であれば [ァ-ヶ\uFF61-\uFF9F\s-[ ]]←半角スペースを除外 [ァ-ヶ\uFF61-\uFF9F\s-[ ]]←全角スペースを除外。 ではどうでしょうか。 http://msdn.microsoft.com/ja-jp/library/20bw873z(VS.80).aspx 文字クラス減算 文字クラスは、文字のセットを定義します。文字クラス減算によって、ある文字クラスから別の文字クラスの文字を除外した文字セットが生成されます。 文字クラス減算式の形式は次のとおりです。 [ base_group -[ excluded_group ]] 角かっこ ([]) とハイフン (-) は省略できません。base_group は、「文字クラスの構文」の表で説明されている文字グループの肯定または文字グループの否定です。excluded_group は、別の文字グループの肯定または文字グループの否定、あるいは別の文字クラス減算式です (つまり文字クラス減算式は入れ子にできます)。 たとえば、"a" ~ "z" の文字範囲で構成される基本グループがあるとします。"m" を除外した基本グループで構成される文字のセットを定義するには、[a-z-[m]] を使用します。"d"、"j" および "p" の文字を除外した基本グループで構成される文字のセットを定義するには、[a-z-[djp]] を使用します。"m" ~ "p" の文字範囲を除外した基本グループで構成される文字のセットを定義するには、[a-z-[m-p]] を使用します。" >"[^ァ-ヶ|\uFF61-\uFF9F|\S]" 文字クラスの中でストロークはメタ文字じゃありませんし、 ^は全体にかかるので、¥Sじゃ意味が逆です。
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
最初の"^"と最後の"+$"はなんでしょ? それから、許可とあるからには「それ以外」を見つけたらエラーということでは? よって、"[^ァ-ヶ|\uFF61-\uFF9F|\S]"という文字が見つかればエラーということだと思います。 全角、半角のスペースを区別したいなら、コードで表記すればよいでしょう。
関連するQ&A
- 正規表現の空白文字について
Javaで正規表現を使って文字列のマッチング処理を勉強しています。 パラメータで渡されてきた値に"name="と入っている場合、マッチOKに したいのですが、 "name" と "="の間には、全角、半角スペースが複数混在している可能性があり、 その場合もマッチOKにしたいです。 アドバイスをお願いします。 ・マッチOKにしたい文字列 name= name = name = name = name = など。 name" と "="の間には、全角、半角スペースが複数存在している可能性あり。 スペースなし(name=)の場合もマッチOKにしたい。 以下のようにすると全角のみ、半角のみのスペースなら1文字以上入っていても マッチOK(スペースなし(name=)の場合もマッチOK)ですが、 全角と半角のスペースが混在してしまうとマッチOKになりません。 String param = "name=mike"; Pattern p = Pattern.compile("name( *?|\\s?)=", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(param);
- ベストアンサー
- Java
- Javaの全角スペースの正規表現
今、Javaのプログラムをしてるんですが、正規表現で全角スペースをどう表現したらいいのでしょうか? 下記のプログラムを実行して、スペースを埋めて「あいう」と出したいです。 Pattern.compile("正規表現").matcher(" あ い う ").replaceAll(""); 正規表現の\sとか、trim()メソッドを使用するなどだと、半角スペースしか削除することができなかったです。 よろしくお願いします。
- ベストアンサー
- Java
- VBAで正規表現
Excel2000-VBAにてマクロ作成中です。 以下のような処理を正規表現を使用して一発で実行させたいのですが、 正規表現に指定するパターンがわかりません・・・。 どなたがご存知でしたら教えて下さい。 やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、 さらに連続している半角スペースを1つに置換したい。 スペースを半角に統一することは、Replace関数で可能かと思っています。
- ベストアンサー
- Visual Basic
- 正規表現で特定文字に挟まれた範囲内での検索
VS CODE にて文字列の正規表現で文字列(プログラムではありません)の検索をしたく質問いたします。 (A B C)<A B C> という文字列があり、この中の半角スペースを別の文字に置換したいのですが、全ての空白ではなく( )に挟まれた中の半角スペースだけを検索したいと思っています。 ↑の用な文字列から( )内の半角スペースだけを照らし出す正規表現を教えていただいていただけると嬉しいです。
- ベストアンサー
- その他(プログラミング・開発)
- 秀丸を利用して、空白から空白の間で、正規表現を使う
秀丸を利用して、空白から空白の間で、正規表現を使いたいのですが、 やりかたが分かりません。 ^半角スペース.+?半角スペース と思ったのですが、違いました。 正規表現を使いたいところは、 こんな感じになってます。 謎の空白 半角空白 文字列 謎の空白 半角空白 (行頭からここの文字列の前だけ切りたい) 謎の空白 半角空白 文字列 謎の空白 半角空白 (行頭からここの文字列の前だけ切りたい) : てっきり、全角空白かと思い、記号表示させてみたけど、違いました。 次に、タブかな、と思い、記号表示させてみたけど、違いました。 空白って、全角と半角とタブしか思いつかないのですが、 それ以外に何かあるのでしょうか? また、それは、正規表現で、どう扱うのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現にチェックにチャックが入るようになってしまいました。
秀丸の設定をいじっていたら正規表現というタブにチェックが入るようになってしまいました。 どうしたらチェックが入らないようにできるでしょうか? また、秀丸で編集する時に半角と全角のスペースを表示させるのにはどうすればいいでしょうか。 宜しくお願い致します。
- ベストアンサー
- その他(ソフトウェア)
- 正規表現 文字列中に含まれる複数のターゲット
お世話になります。 [A] A [B] B [C] C [D] という文字列があります。 [の前と、]の後には半角スペースが1個入っています。 これで、[]に囲まれた部分だけを選択したくて、 \[.*\] としたのですが上手く行きません。 このような特殊?な場合は正規表現であらわすことはできないのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現でつまずいています
お世話になっております。 VB2005を使っていますが、正規表現でつまずいています。 日付を表すデータとして、以下のような2つのパターンがあります。 Date: 02-apr-2010 ← : と 02の間に半角スペースがあります。 Date:13-Jan-2010 00:12:14 それぞれから年月日のデータのみを取り出すために正規表現を組んでみましたがうまくいきません。 "Date:\s*(?<date>.*)$|\s.*" $|\s.* で意図したところは、文字列の最後 or スペースが1個と任意の文字が続く、というものです。 正しい表記方法をご指示いただければ幸いです。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic