2016-12-04 129 views
2

我試圖在記事本++中編寫一個正則表達式,它將2個標記之間包含的所有空格替換爲逗號。使用記事本++中某些標記之間的逗號替換空格

所以基本上,如果我有這樣的輸入:

<foo>bar bar bar</foo> 
<tag>bar bar bar</tag> 

而且我想只更換內部foo的標籤空格獲得resut:

<foo>bar,bar,bar</foo> 
<tag>bar bar bar</tag> 

匹配富之間的一切是相當簡單:

(?<=(<foo>))(.*)(?=(<\/foo>)) 

但搜索\ s不起作用:

(?<=(<foo>))(\s)(?=(<\/foo>)) 
+0

嘗試'(:\ G(^)| ?!)[^ <]*\K\s+' -->',',參見[DEMO](https://regex101.com/r/Hyq0Nm/1)。 –

+0

謝謝你Wiktor,發表你的答案作爲評論,所以我可以接受它。 – Nefco

+0

或者只是[lookahead](http://www.regular-expressions.info/lookaround.html):['s(?= [^ <] *

回答

3

由於要更換標籤內的空間,一直沒有孩子,也沒有相同的嵌套的標籤,你可以使用

(?:\G(?!^)|<foo>)[^\s<]*\K\s+ 

regex demo,與,取代。

詳細

  • (?:\G(?!^)|<foo>) - 無論是以前的成功匹配的結束或<foo>
  • [^\s<]* - 除空白,零個或多個符號和<
  • \K - 忽略文本相匹配,以便遠
  • \s+ - 1個或多個空格。