1

を解析する正規表現を作成しようとしてい<stock ticker> - <company>ます。問題は、入力が少し予測不可能であり、許可されたティッカーのフォーマットが広いことです。

ティッカーの内部のハイフンは 1 つでも構いませんが、ハイフンがティッカーの開始または終了の場合は OK ではありません。また、複数のティッカーは許可されていません。したがって、「BRK-B - Berkshire」は「BRK-B」に解析し、「ALL-Allstate」は「ALL」に解析する必要があります。さらに、ハイフンと同じ規則がピリオドにも適用されます。

スペースは、ティッカーの終わりを示す必要があります。

現在、正規表現[a-zA-Z.-]*と他のチェックを使用して、データが適切にフォーマットされていることを確認しています。それは本当に私をつまずかせているのは、末尾のパンク = 悪い (ただし、内部 = OK の場合) ルールです。「ALL-Allstate」は「ALL」である必要がありますが、「BRK-B - Berkshire」は「BRK-B」である必要があります。代わりに上記を実行する単一行の正規表現があるかどうか疑問に思っています。

4

1 に答える 1

3

おそらく次のようなものが必要です。

/[a-z](?:[a-z.-]*[a-z])?/i

これにより、最初と最後の文字が実際の文字になり、単語自体の内部のみが許可.されます。-

于 2013-08-18T20:39:13.733 に答える