0

特定のパターンでグループ化する正規表現を書きたいと思っています。たとえば、文字列の場合:

"File=ZZZZZZZZZZZZZZ QQQQQQQQQQ.txt size=ten check=true test=true"

次のグループを希望します:

File=ZZZZZZZZZZZZZZ QQQQQQQQQQ.txt
size=ten
check=true
test=true

通常はスペースを探すだけで済みますが、ファイル名にスペースが含まれているとうまくいきません。したがって、任意の文字と = にヒットするまで、すべてを一致させる必要があります。

4

1 に答える 1

2

で割ることができ[ ](?=\w+=)ます。括弧内のものは「先読みアサーション」であり、スペースに続くものがパラメーターのように見える場合にのみスペースと一致します。

分割ではなくマッチングを意図している場合は、うまくいく(?:[^ ]| (?!\w+=))+はずです。この(?!...)部分は否定的な先読みアサーションであるため、スペースは、後に続くものがパラメーターのように見えない場合にのみ一致します。

すべての正規表現エンジンが先読みアサーションをサポートしているわけではないことに注意してください。ほとんどの場合、特に PCRE 風味のものはそうです...ただし、正しい構文については、正規表現エンジンのドキュメントを確認してください。

(また[ ]、Markdownはインラインコードの先頭のスペースを嫌うため、使用しています。代わりに(括弧なしで)\sスペースを使用するか、空白文字でパラメータを区切ることを許可したい場合。)

于 2013-03-25T17:05:50.343 に答える