2009-03-10 8 views
5

"Johnson"、 "Del Sol"、または "Del La Range"と一致するC#の正規表現が必要です。言い換えれば、中間のスペースは単語に一致しますが、先頭または末尾にスペースはありません。内部空間を含む姓のC#での正規表現

+1

入力文字列はどのように見えますか?最後の名前は文字列の唯一の部分ですか、それとも文章ですか、場合によってはスペースのあるフルネームですか?ここでは文脈が重要だと思う。 – Rich

答えて

0

?修飾子はあなたの友人です。欲張りなものではなく、できるだけ早くマッチします。

^(.+?) (.+)$ 

グループ1は最初のスペースまですべてを取得し、グループ2は残りを取得します。

もちろん、の最初のにスペースが含まれているとしたらどうなりますか?

+0

ニースとシンプルですが、私は "238 39592"にもマッチすると思いますが、それは言葉ではありません。 –

+0

"を置き換えます。 "\ w"または "[a-zA-Z]" – Rich

+0

OPが姓と一致したい場合、または名字と姓の両方を含む文字列内で一致するかどうかわかりません。後者をしたようです。それでも、あなたの正規表現は開始時または終了時にスペースを許されているように見えますが、修正する必要があります。私は最後の名前が数字を含めることができるとは思わない – Noldorin

0

このような何かを試してみてください:これは仕事をしなければならない

^[^\s][\w\s]*[^\s]$ 
+0

... –

3

^[a-zA-Z][a-zA-Z ]*[a-zA-Z]$ 

編集:は、ここでは名前に一後者の名前とハイフン/アポストロフィを可能に若干の改善です:

^[a-zA-Z'][a-zA-Z'- ]*[a-zA-Z']?$ 
+0

マルコムXが、このことについて幸せではないでしょう... –

+0

(ある2文字の姓...の最小値を必要とする)私は考えることができる最短の本当の名前です"Ng。"うまくいくはずです。 ;) –

+0

人の非ゼロの数がええ、私は審査時に、しかし変化する気にしませんでした私は、最後の1文字を考慮していなかったので、気づい –

5
^\p{L}+(\s+\p{L}+)*$ 

この正規表現は次の機能を備えています:

  • マルコムXの姓)
  • \wまたは[^ ]意志で何かのような数字()
  • マッチユニコード文字

しかし、どのような「オコナー」などの姓についてを含む最後の名前と一致しませんうーん...

-1

ハイフン付きの姓...私は、これはあなたが探していたより何だと思う:この寿

^[^ ][a-zA-Z ]+[^ ]$ 

ldは空白、アルファベット、スペースのない行の先頭に一致し、最後にスペースはありません。

これはIRBで動作しますが、私はC#ので働いていた最後の時間は、私は同様の正規表現を使用しました:

(ゼロで良い、nilの手段が失敗した)名前で

>> "Di Giorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/ 
=> 0 
>> "DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/ 
=> 0 
>> " DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/ 
=> nil 
>> "DiGiorno " =~ /^[^ ][a-zA-Z ]+[^ ]$/ 
=> nil 
>> "Di Gior no" =~ /^[^ ][a-zA-Z ]+[^ ]$/ 
=> 0 
+1

[^]を使用すると、数字、句読点などで始まるまたは終わる姓に一致します。 –

+0

Danny's right。私は同じ解決策で反応し、私がこれを認識したときにそれを収縮させた。 –

3

を「サラ広告-DīnYūsufibnAyyūb "(http://en.wikipedia.org/wiki/Saladdin参照)は、最初の名前であり、最後は何ですか? "Roberto Garcia y Vega"(発明された)の名前はどうですか? 「蒋介石」(http://en.wikipedia.org/wiki/Chang_Kai-shek参照)?

名前のスペースは、あなたの問題の中で最も少ないです! Personal names in a global application: What to storeを参照してください。ここで

+0

私は同意します。どんなに頑張っても、正しく一致しない名前が常に見つかるでしょう。つまり、あなたが解析している名前を完全に制御できない場合です。 –

0

は1良いでしょう:

/^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/ 

は、標準的な句読点やスペースを使用できますが、句読点を開始することはできません。

関連する問題