我想知道是否有一種優雅的方法來匹配一個預編譯的正則表達式與另一個正則表達式?我想不是,但仍然決定問。在Perl中匹配正則表達式和另一個正則表達式
說,我想找到對應於特定模式的Puppet的node.pp中的所有節點。問題是,節點名稱可以(並且通常)被定義爲正則表達式本身。例如,可能需要查找'生產'環境中的所有節點,這些節點都按照慣例以'p'開頭,然後是1或2 /^p[12].+$/
。換句話說,
p(1|2)proxy-[1-4].domain.lan
p1smtp-[1-2].domain.lan
p[12]what-not-[1-8].domain.lan
應該匹配,而
q(1|2)proxy-[1-4].domain.lan
q(1|2)smtp-[1-2].domain.lan
q(1|2)what-not-[1-8].domain.lan
不應該。
目標字符串(如果編譯爲正則表達式)都是更一般表達式的子情況。所以我想知道,如果有任何捷徑?
當然,可以將節點名稱作爲包括所有'正則表達式'變體的文字字符串 - 在該特定情況下不應該很難。
那麼,你想與哪個正則表達式進行比較?你是說你想檢查是否匹配,比如'p(1 | 2)proxy- [1-4] .domain.lan'也匹配'^ p [12]。+ $'?這些正則表達式來自哪裏?特別是第二套。 – Borodin 2013-05-11 14:24:03
@Borodin:我需要一個(更一般的)正則表達式來匹配其他更具體的類正則表達式字符串。如果類似於正則表達式的字符串可能以某種方式被解釋爲正則表達式而不是字符串,那將會更容易。該示例取自Puppet的node.pp文件。現在回答這個問題,見下文。 – badbishop 2013-05-11 17:18:39