2017-01-08 273 views
2

我正在與正則表達式中的記事本++「patching_rect」後到前兩個逗號之間的內容相匹配掙扎後匹配兩個逗號之間內容:「在文本的這個一行:正則表達式的字符串

」 [patching_rect 。

: 「:[218.5,165.0,150.0,20.0,

在這種情況下所需的匹配爲」 165.0"

我設法匹配第一對4與座標

(?<="patching_rect" : \[).*?(?=,) 

但我想匹配第二個。誰能幫忙?

+0

你的意思是'patching_rect [1]'? –

+0

我需要用「0.0」替換「165.0」。但那165.0也可以是另一個數字。 –

+0

「patching_rect」是否保證出現在行首? – Tom

回答

2

我不會打擾lookbehinds。這是一個解決方案。有了這個

("patching_rect"\s*:\s*\[[^,]+,\s*)[^,]+ 

:替換此

${1}0.0 

這樣做什麼是很簡單:

  • "patching_rect"\s*:\s*\[匹配的一切行動和包括[
  • [^,]+,\s*第一值相匹配和逗號以及下面的空格
  • [^,]+第二值

第一部分在$1捕獲,並且在替換字符串重用匹配。

+1

您也可以使用'\ K'來省略所需匹配前的所有內容。 –

+1

@SebastianProske是的,好點。 OP:替換''patching_rect'\ s *:\ s * \ [[^,] +,\ s * \ K [^,] +'用'0.0' –

+0

完美!奇蹟般有效。非常感謝! –

0

我想我知道了:訣竅是同樣的事情,以取代該行的整體啓動,然後後更換編號:

這正好在尋找:("patching_rect" ?: ?\[[^,]+,) ?([^,]+) 這正好替換:$1 0.0

問號在那裏,以便空格是可選的,以防萬一。