我正在做一些代碼清理,並且需要確保我的gsub!
僅在一小段代碼上運行。我需要檢查的代碼部分以{{Infobox television
(\{\{[Ii]nfobox\s[Tt]elevision
爲技術)開頭,並以結尾的匹配雙括號「}}」。如何使用ruby和/或正則表達式抓取匹配括號內的所有文本
將要運行gsub!
的一個例子是text.gsub!(/\|(\s*)channel\s*=\s*(.*)\n/, "|\\1network = \\2\n")
...
{{Infobox television
| show_name = 60 Minutos
| image =
| director =
| developer =
| channel = [[NBC]]
| presenter = [[Raúl Matas]] (1977–86)<br />[[Raquel Argandoña]] (1979–81)
| language = [[Spanish language|Spanish]]
| first_aired = {{Date|7 April 1975}}
| website = {{url|https://foo.bar.com}}
}}
...
注:
- 使用
sub
代替gsub
是不是一種選擇,由於這樣的事實的多個實例可能存在需要替換的參數。 - 我不能只查找
}}
的第一組,因爲可能有多組,如上例所示。
嘗試[/(?= \ {\ {\ nfobox \ s [Tt] elevision)(\ {\ {(?> [^ {}] ++ | \ g <1>)*}}) /'](http://rubular.com/r/ev0o128Uzk)。 –
@WiktorStribiżew發表了這個答案!工作! – Zack
只需一秒鐘,就能處理它 –