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 是[ ]因为 Markdown 讨厌内联代码中的前导空格。您可以只在其中使用一个空格(不带括号),或者\s如果您想允许任何空格字符分隔参数。)

于 2013-03-25T17:05:50.343 回答