它會是這個樣子:
var result = Regex.Replace("FX(Y + 1, -(5 * 10) + FML(\"Test - KB\")",
"(?<=^([^\"]|\"[^\"]*\")*)-",
"-1 * ");
正則表達式的解釋:
(?<= # preceded by..
^ # the start of the string, then
([^"] # either not a " character
|"[^"]*" # or a string: "..."
)* # as many times as you want
)
- # then match the hyphen
輸出爲您的示例字符串是:
FX(Y + 1, -1 * (5 * 10) + FML("Test - KB")
(請注意,這不處理字符串轉義,如果他們在你的目標語言的支持。)
該解決方案將正確處理字符串,而不僅僅是啓發式。這裏有一個例子:
FX(Y+1, -(X+Y) + "EMBEDDED: FX(Y + 1, -(5 * 10)" - (X+Y)
變爲:
FX(Y+1, -1 *(X+Y) + "EMBEDDED: FX(Y + 1, -(5 * 10)" -1 * (X+Y)
注意,字符串沒有觸及,即使它「看起來像」的其他部分。
該字符串無效。 – 2012-08-09 03:38:34