2015-11-08 57 views
0
<input name="so and so" id="john doe" value="something something" /> 

我想只匹配空格字符是「一個價值=屬性中的內匹配的字符正則表達式PHP:一套報價

我想出了這一點:

value="[^"',:<>/\r\n]*[ ][^"',:<>/\r\n]*" 

問題是這整串,在那裏我只需要匹配的字符串的空間從上面匹配。

我讀一些教程,這導致我認爲我需要使用條件語句,但我似乎無法弄清楚這將如何工作。我的猜測(當然沒有工作)是:

(?(?=value="[^"',:<>/\r\n]*[^"',:<>/\r\n]*")[ ]) 

任何幫助表示讚賞。謝謝!

+0

噢,對不起這是PHP –

回答

1
\bvalue="\K|\G(?!^)[^"]*?\K\s+ 

您可以使用此找到spaces這是在value="和關閉"。看到演示之前。

https://regex101.com/r/lR1eC9/11

編輯:

(?:(?<=\bvalue=")|\G(?!^))[^"]*?\K\s+(?=[^"=]*") 

觀看演示。

https://regex101.com/r/lR1eC9/13

+0

是接近,但並不完全工作。它會匹配任何以value =「開始的字符串,在你的例子中,它匹配value =」dogcat沒有關閉a「或空間 –

+0

Nevermind。它似乎在現實世界中工作:)爲什麼它報告4匹配雖然只有3個,並且每次添加新值時都會有新匹配=「即使沒有關閉」或/ s? –

+2

@DavidAvellan另請嘗試[像此修改](https://regex101.com/ r/cF0xG7/1)vks整潔的正則表達式 –