2011-07-12 17 views
7

C#プログラムでRegexが必要です。正規表現のアクセントには影響を受けませんか?

私は特定の構造を持つファイルの名前をキャプチャしました。

私は\ wの文字クラスを使用しますが、問題は、このクラスは、任意のアクセント付き文字と一致していないということです。

これはどのようにするのですか?私は理論的にすべての文字にすべてのアクセントを置くことができるので、最もよく使われているアクセント付きの文字を私のパターンに入れたくありません。

私は、大文字小文字を区別しない(またはアカウントアクセントを取るクラス)、または大文字小文字を区別しないようにする "Regex"オプションを指定するための構文があります。

あなたはこのようなことを知っていますか?

は、このために私を撃墜ないが、あなただけのファイル名に一致するようにしようとしているならば、なぜ他の道を行くと、除外文字を使用しないでください?非常に多くの

+0

が非一致提供アクセント付き文字 –

+0

は、あなたがしようとしませんでした。それは以下のようになります:改行文字を除く任意の1文字に一致します – MrFox

+2

コード内で試したことを*表示できますか? –

答えて

4

ケース-insensite作品:

 string input [email protected]"âãäåæçèéêëìíîïðñòóôõøùúûüýþÿı"; 
    string pattern = @"\w+"; 
    MatchCollection matches = Regex.Matches (input, pattern, RegexOptions.IgnoreCase); 
+0

それはその文字列全体と一致します。 –

+0

私はそれが大文字と小文字を区別する必要があるため、私は、私は、RegexOptions.CultureInvariantを申し訳ありません使用しています:) – J4N

0

をありがとう

[^<>:"/\|?*] 
1

これを試してみてください:

String pattern = @"[\p{L}\w]+"; 
-2

あなたがしようとしました。次のようにする必要があります。改行文字を除く任意の1文字に一致します。 \ w:アンダースコアを含む任意の単語文字に一致します。 「[A-Za-z0-9_]」と同等です。 アクセント付きの文字は除外されています。この例では、私にとって

http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

+0

あなたは自分自身と矛盾します。私はあなたが言う: '\ w'は任意の単語にマッチし、' [A-Za-z0-9_] 'と等価です –

0

あなたはこれを試してみて、それが動作するかどうかを確認することができます:

[\u00E9-\u00F8\w] 
2

使用この\p{L}の代わりに、クラス\w

\p{L}は、カテゴリが「文字」のUnicodeコードポイントです。たとえば、「äöüüè」などが含まれます。あなたは、たとえばたい場合はまた、あなた自身の文字クラスでそれを使用することができます

この[\p{L} .]

アップデートのようにスペースまたはドットを含める:

OK、私はまた、.NETでその\wを認識しましたASCII文字だけでなく、Unicode文字も含める必要があります。

だから私は、あなたが求めているのかわからないです。手紙のように見えるが、そうでないものを許可したい場合は、\S(空白ではない)を使用して終了すると思います。

いくつかの例を表示すると役立つかもしれません。

11

あなたは、単にアルファベット(近)同値で特殊記号を交換して、あなたの現在の正規表現を使用して使用することができます。例えば

参照してください:

How do I remove diacritics (accents) from a string in .NET?

static string RemoveDiacritics(string input) 
{ 
    string normalized = input.Normalize(NormalizationForm.FormD); 
    var builder = new StringBuilder(); 

    foreach (char ch in normalized) 
    { 
     if (CharUnicodeInfo.GetUnicodeCategory(ch) != UnicodeCategory.NonSpacingMark) 
     { 
      builder.Append(ch); 
     } 
    } 

    return builder.ToString().Normalize(NormalizationForm.FormC); 
} 

string s1 = "Renato Núñez David DeJesús Edwin Encarnación"; 
string s2 = RemoveDiacritics(s1); 
// s2 = "Renato Nunez David DeJesus Edwin Encarnacion" 
+0

実際に私がミスをしたええ、正規表現は私のアクセントの言葉を取っていなかったが、それが原因ではなかったですアクセントが、 " - "のために。私があなたをゆるやかにしている間、私は非常に残念です。 "\ w"は実際に動作します – J4N

関連する問題