2015-02-08 20 views
0

我不知道如何將我的搜索短語來獲得我所需要的。我有以下線的情況下,在一個大的代碼庫正則表達式與C#刪除匹配的前綴和後綴,並保留部分

$utils.decode(Coding.ASCII, 213) 
$utils.decode(Coding.ASCII, itemId) 
$utils.decode(Coding.ASCII, data.id) 

我需要將其更改爲

213 
itemId 
data.id 

或在一般情況下,更換

dasf->fd.fer$%#tewqeqABCDE#@S$%D 
dasf->fd.fer$%#tewqeqCDEF#@S$%D 
dasf->fd.fer$%#tewqeqFGHITP#@S$%D 

ABCDE 
CDEF 
FGHITP 

前綴和後綴是alwa ys相關且始終相同。如何在C#中使用正則表達式構造這樣的模式?我也想知道,這種模式匹配被稱爲什麼?

編輯

我想這

Regex regex = new Regex("\\$utils\\.decode\\(Coding\\.ASCII, (.*)\\)"); 
inStr = regex1.Replace(inStr, "$1"); 

,但不能使它工作

編輯

這是@Enigmativity

爲例10
$item.save(
    $utils.decode(Coding.ASCII, 213), 
    $utils.decode(Coding.ASCII, itemId), 
    $utils.decode(Coding.ASCII, data.id), 
    currDate(), 
    $user 
); 

... 

$item.get(
    $utils.encode(Coding.ASCII, 213), 
    currDate(), 
    $user 
); 

... 

$item.calculatePrice(
    $utils.decode(Coding.ASCII, itemId) 
); 

以上文字$utils.decode(Coding.ASCII,)應該一併刪除。

+0

您可以用'$ 1'替換'\ $ utils \ .decode \(Coding \ .ASCII,(。*)\),' - https://regex101.com/r/kC5oD4/1?或者你有什麼需要更一般的東西?你知道你的前綴和後綴嗎? – Kobi 2015-02-08 07:35:29

+0

爲什麼不使用普通字符串替換?畢竟,我們正在討論去除*固定的和已知的子串。 – Tomalak 2015-02-08 07:48:10

+0

@Kobi,是的前綴和後綴總是已知和相關,但我有太多的後綴+前綴的情況下逐一提及,所以我問一個普遍的答案。你的正則表達式工作正常,但我如何在C#中使用它? – AaA 2015-02-08 07:54:45

回答

1

這爲我工作:

var result = 
    Regex 
     .Replace(
      code, 
      Regex.Escape("$utils.decode(Coding.ASCII, ") 
       + "(.*?)" 
       + Regex.Escape(")"), 
      "$1"); 

所以,從這個:

var code = @"$item.save($utils.decode(Coding.ASCII, 213), $utils.decode(Coding.ASCII, itemId), $utils.decode(Coding.ASCII, data.id), currDate(), $user); 

... $item.get($utils.encode(Coding.ASCII, 213), currDate(), $user); ... 

$item.calculatePrice($utils.decode(Coding.ASCII, itemId));"; 

我得到這個:

$item.save(213, itemId, data.id, currDate(), $user); 

... $item.get($utils.encode(Coding.ASCII, 213), currDate(), $user); ... 

$item.calculatePrice(itemId); 

"(.*?)"簡單地捕獲組的零個或多個字符,但越少越好。缺點是它不會平衡括號,所以如果$utils.decode調用中的參數有括號,這種方法將不起作用。

+0

添加一個關於你正在使用的模式的解釋是很棒的,還有一件事是這種模式匹配有一個名稱? – AaA 2015-02-08 08:45:16

相關問題