-1

次のデータがあります。

abc デフ; ギ。

この正規表現は次のように一致します。

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)( (\w\.))?

この正規表現も一致します

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)$

私はまだ正規表現に慣れていませんが、 | と思いました。OR の略で、() はグループ化され、? 0 または 1 回の出現を意味します。したがって、上記のクエリを組み合わせても一致すると思いました。ただし、以下は一致しません。

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)( (\w\.))|$

私は何を間違っていますか?

ps。私は正規表現をテストするために以下を使用しています。 http://regexpal.com/

編集:コードタグを使用しなかったため、文字が消えました

EDIT2: 私が一致させようとしているのは次のとおりです。データは名前になります。したがって、「abc def」は姓です。ghi の挨拶 (英語は私の母国語ではありません。サーのような単語の正しい用語ですか?)。ただし、名の最初の文字は可能です。そのため、行末またはその文字にする必要があります。

名が含まれている場合のデータは次のようになります。

abc; 定義。G.

4

1 に答える 1

1

| の演算子の優先順位 オペレーターは少し難しいです。通常は、2 つのオペランドを括弧で明示的にラップすることをお勧めします。また、正規表現にスペースを挿入する際にも注意してください。\w のリテラルのピリオドに一致させたいようです。フラグメント、「G」に一致します。

組み合わせ式に必要なものは次のようなものだと思います

((.*)( (\w\.))?)|(.*)$

しかしそれ以来 ?あなたが学んだように、これは次のように書き換えることができます。

(.*)( (\w\.))?)$

そして、残りの式を元に戻すには、次のようにします。

^[a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)( (\w\.))?)$

そして、はい、「あいさつ」または「あいさつ」は、「Mr.」、「Ms.」、「Dr.」などに適した言葉です。

于 2012-04-05T17:30:59.453 に答える