2017-09-09 3 views
1

背景正規表現行動は、C#で期待できないよう

私は正規表現(last night)と協力し始めています。

私は以下の式で単一[singleletter]:をマッチング開始しました:

式: \ S +([AZ]:+)

オリジナルの文字列:フー・U:ジェームズ・HC:ユーザーP:製品

出力: [ "FOO"、 "U"、 "ジェームスH"、 "C"、 "ユーザー"、 "P"、 "製品"]

問題

私は[fullword]:代わりの[sigleletter]:をキャプチャするために正規表現を変更しようとしています。以下の両方の式は、regexr.comで必要に応じて動作しますが、C#では動作しません。私は間違って何をしていますか?

オプション1: [-ZA-Z] *([-ZA-Z] +)

オプション2:ワット* \([-ZA-Z] :+)

テストストリング: FOOユーザー:CUSTジェームスH:ユーザーPROD:製品

所望の出力: [ "FOO"、 "ユーザー"、 "ジェームスH"、「CUST。 "、" user "、" prod: "、" product "]

フルワードの定義:大文字と小文字を区別しないAZ

var foo1 = Regex.Split("cust:test", "[a-zA-Z]*([a-zA-Z]:+)"); 
var foo2 = Regex.Split("cust:test", "\w*([a-zA-Z]:+)"); 

最後に、現在[ `で動作する最初の式は動作しません(プラスコロン)

のC# singleletter]: 'はテストされたすべての文字列の先頭で空文字を返しますが、C#でのみ返されます。もう一度、私は何かを逃しているように感じる...

+0

'Regex.Split( "FOO U:ジェームズ・HC:ユーザーP:製品" "\ sの+" @、);' –

+0

何*フルワード*と見なされますか? – revo

+0

@ L.B、希望の出力をよりよく説明するために質問を更新しました。ここでもregexr.comで動作します。 –

答えて

1

異なるエンジンは異なった働きをします。あなたは少しの修正に加えて、単語境界メタ文字を試してみてください:

\b([a-zA-Z]+:) 
+1

それはそうです。どのようにイライラする。私は\ wと\ bの違いをよく理解していません。もう少し読書する時間。ありがとう! –