2012-03-11 38 views
155

次の正規表現で大文字と小文字を区別しないようにするにはどうすればよいですか?これは、すべての正しい文字と一致するはずですが、それらが小文字か大文字かを無視します。Regex:大文字と小文字の区別を無視する

G[a-b].* 
+0

大文字と小文字の両方を正規表現に含めたり、大文字に変換したりする前に、正規表現のマッチング –

+0

G [a-bA-B]を実行してください。*この一般的なケースでは明らかですが、大文字と小文字の区別はafaikプラットフォームに依存し、プラットフォームを提供していません。 –

+8

Javaを使用している場合、これをPatternクラスで指定できます。 'Pattern pattern = Pattern.compile(regex、Pattern.CASE_INSENSITIVE);'。 –

答えて

229

全体の正規表現で大文字小文字を無視すると仮定すると、i flagを検索する必要があります。ほぼすべての正規表現エンジンがそれをサポートしています。

/G[a-b].*/i 

string.match("G[a-b].*", "i") 

マッチングモードが指定されている方法を見つけるためにあなたの言語/プラットフォーム/ツールのマニュアルを参照してください。

  1. (?i)と[必要に応じて] (?-i)モード修飾子を使用する:あなたは正規表現の唯一一部は大文字小文字を区別しないようにしたい場合(私の元の答えはと推測される)

    は、その後、2つのオプションがあります。

    (?i)G[a-b](?-i).* 
    
  2. はすべてのバリエーションを入れて(つまり、小文字と大文字)正規表現で - モード修飾子がサポートされていない場合に便利:

    [gG][a-bA-B].* 
    

最後の一つのノート:あなたはASCII以外のUnicode文字を扱っている場合は、あなたの正規表現エンジンがそれらを適切にサポートしているかどうかを確認してください。

+0

Brilliant! UTF-8?B?と一致する/置き換える文字列は、perl -peの/^utf-8 \?B \?。* $ // gi 'Cancer.1631ファイルCancer.1631。これは失敗します:perl -peの/^utf-8 \?B \?。* $ // g 'Cancer.1631、大文字と小文字の不一致です。 –

43

iフラグは、大文字と小文字の区別のために通常です。ここに言語を書いてはいませんが、おそらく/G[a-b].*/iのようなものでしょう。

78

実装 に依存するが、私はちょうど私がUnicodeを使用したC++での正規表現のためのソリューションを追加したい完全を期すために

(?i)G[a-b]. 
+0

これは、TortoiseHgの検索正規表現エンジン用の修飾子形式です。 – mwolfe02

+0

これは、Linuxシェル(「-i」スイッチを使わずにegrepと言う)でどのように達成できるのか教えてください。 –

+0

これはC#で完璧に動作します –

13

を使用します。

std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase); 

if (std::tr1::regex_match(szString, pattern)) 
{ 
... 
} 
+1

誰かがこの投稿がdownvotedされた理由を明らかにすることはできますか?受け入れられたソリューションは特定のコードを使用しており、完全性のために、私は言語C++の標準ライブラリ用のソリューションを追加したかったのです。私の意見では、より一般的な質問に付加価値を付けました。 – Frankenstein

0

をあなたもつながることができますパターンマッチングをチェックする最初の文字列を小文字に変換します。あなたのパターンには、それぞれ小文字の記号を使用します。

3

この類似の投稿(ignorecase in AWK)、古いバージョンのawk(vanilla Mac OS Xなど)では、'tolower($0) ~ /pattern/'を使用する必要があります。

IGNORECASEまたは(?i)または/pattern/iは、エラーを生成するか、すべての行でtrueを返します。敏感な検証 'ABC' を無視した場合の

26

正規表現

(?i)(abc) 
+1

これは、Javaを使用している場合に特にうまくいくようです... – LAK

+0

Android Studioで完全に動作するlogcat – Joe

-1

[gGを] [AABB]。*パターンが複雑すぎるか長くない場合は、おそらく最も簡単な解決策。

+0

この回答が特定の質問に間違っている理由を知りたいですか? –

関連する問題