我想知道是否有可能在正則表達式替換中創建一個條件?正則表達式條件替換
讓我們舉一個簡單的例子:
- 每
<filename>.orig
應改變<filename>.dest
- 每
_<filename>.orig
應該default.dest
改變使用這個表達式,我如果2組捕捉<filename>
它的前綴是下劃線,否則在組3中:
,我想這會是這樣的替換使用條件語句(/(?(if)then|else)/
):
/^(_)?((?(1)[a-z-]+|))((?(1)|[a-z-]+))?\.orig$/(?($2)default|$3)\.dest/i
顯然,不幸的是,這是行不通的:
+-------------+-----------------------+--------------+ +----+-----+-----+
| Input | Output | Expected | | $1 | $2 | $3 |
+-------------+-----------------------+--------------+ +----+-----+-----+
| foo.origin | (?()default|foo).dest | foo.dest | | | | foo |
| bar.origin | (?()default|bar).dest | bar.dest | | | | bar |
| _baz.origin | (?(baz)default|).dest | default.dest | | _ | baz | |
+-------------+-----------------------+--------------+ +----+-----+-----+
有沒有人知道一種方法來實現我的目標?
它基於您正在運行的語言。我認爲這將是可能的在Perl中。 – 2014-10-20 15:16:05
你在做什麼語言?這將有助於將其分解。此外,只是一個參考,條件是沒有必要這樣做,實際上它似乎太多了。 – hwnd 2014-10-20 15:18:10
我同意@AvinashRaj。據我所知,在Python中是不可能的。你將不得不分別調用每個正則表達式的替換方法。 – skrrgwasme 2014-10-20 15:18:12