2017-07-19 9 views
0

すべての単語を.txtドキュメントにキャプチャしようとしています。アポストロフィを含むC#でのこの正規表現の問題

単語はアポストロフィ(両方アポストロフィ「右単一引用符」の文字は、文字のいずれかを使用することができる入力のために捕捉される)ように、 をまたはを有していてもよい切れ目のない文字とハイフンの任意の文字列として定義されています正規表現:

[a-zA-Z\-]+['a-zA-Z\-\’\']* 

は今、これはいくつかのオンライン正規表現のテストウェブアプリのthingosで動作しているようですが、ちょうど私のC#コードで仕事をしたいとは思われないと私は理解していない理由:

MatchCollection matches = Regex.Matches(input_String.ToLowerInvariant(), 
             @"[a-zA-Z\-]+['a-zA-Z\-\’\']*"); 
string[] sorting_String = matches.Cast<Match>().Select(match => match.Value).ToArray(); 

wo "私は"のようなrdはテキストに含まれています、それは別の言葉ではなく、 "i"と意図された単一のエントリ "私は" "i"を返しています。

今回はグーグルでは見つからなかったし、オンラインテスターでは意図したとおりに動作するので、エスケープの問題であるかどうかはわからない...私は困惑している。

誰かが私にC#で期待しているものを返さない理由を説明することができますか?または少なくとも、System.Text.RegularExpressionsライブラリを使用していますか?私はそれが私が愚か/無知であると仮定します。

編集1:ここに問題を示す地元のスクリーンショットがあります。 Image of Locals 「書籍」にする必要があります。 Image of encoding issue? maybe?

Ehhhh、入力は.txtファイルです。ファイルの書式設定はそのままです。so so私のコードで何かが起きていて、うまくいきません...少なくとも、それは私が問題を推測しているところです...私はこのXDの専門家ではありません。申し訳ありませんが、私はこれを手助けできるリソースの方向を指摘することができますか?

+2

'" @ "'を削除してみてください。 –

+1

[私は問題を再版できません](http://ideone.com/dSDvY4)。また、より良いパターンは '[a-zA-Z] +(?:[' - - [a-zA-Z] +)*'または '\ p {L} +(? - ] \ p {L} +)* 'となります。 –

+0

@MichałTurczyn私の最初の考えもありますが、@がなければ正当な文字列リテラルでもありません。 @はここで正しいです。 –

答えて

1

あなたはこの[\w\'\-]+[\w\'\-]*を試してみて、それは私はあなたが第2ブラケットの最初の'を逃れるべきだと思い

を動作するかどうかを確認することができます。