2

正規表現の質問はこちら!

ここに私が得ることができる2種類の行があります:

a b c d COMMENT
a b c d vs e

1行目だけパースしたい

これが私がすることです:

^\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+((v(?!s)|[^v]).+)$

vs eこれは、次のように複数のスペースがない限り、.....で終了するのではなく、この種の行をきれいに解析します。

a b c d  vs e

\s+否定先読みの前に、現在の動作ではなく「可能なすべてのスペースを取得する」という意味があることを指定する方法を見つけようとしています。

それを正規表現でどのように記述しますか?

ありがとうございました!

4

2 に答える 2

1

[^v]問題は、2 番目のスペースがグループ内のパターンと一致することです。これを防ぐには、代わりに次のパターンをお勧めします。

^\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+((v(?!s)|(?!v)\S).+)$

これにより、グループの先頭にスペースが取り込まれないことが保証されます (文字で始まる必要があり\Sます)。

于 2013-09-05T22:00:07.297 に答える