2013-03-25 52 views
0

我正在寻找编写特定模式组的正则表达式。例如,对于字符串:正则表达式,直到一个模式的所有内容

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

我想组:

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

通常情况下我只能找空间,但如果我的文件名中有一个空格,然后这不起作用。所以我需要匹配所有东西,直到我碰到任何字符再加上=。

回答

2

您可以按[ ](?=\w+=)拆分。圆括号中的内容是一个“前瞻性断言”,只有当后面的内容看起来像一个参数时,它才会匹配一个空格。

如果您打算进行匹配而不是拆分,(?:[^ ]| (?!\w+=))+应该可以工作。 (?!...)部分是一个超前断言,所以空间只会匹配如果以下任何东西看起来像一个参数。

请注意,并非所有正则表达式引擎都支持前瞻断言。大部分都是,特别是PCRE风格的......但请检查正则表达式引擎的文档以获取正确的语法。 (另:我使用[ ],因为Markdown不喜欢内联代码中的前导空格,如果你想允许任何空白字符分隔参数,你可以使用空格代替(不包括括号),也可以使用\s

+0

嗨cHao,我可能应该提到我使用Java,我刚刚尝试过使用以下网站,它不起作用http://www.regexplanet.com/advanced/java/index.html 有什么想法? – Adam 2013-03-25 17:25:15

+0

是的。这种模式不匹配;它被分裂。使用它像'String [] pieces = yourString.split(“(?= \ w + =)”);'。如果你匹配,它只会匹配空格,这有点用处不大。刚刚进行编辑以包含应该可用于匹配的表达式。 – cHao 2013-03-25 17:27:55

相关问题