2013-01-09 51 views
0

我試圖用C#替換大字符串中的單個字符(textfile)。 該字符串包含多行代碼。使用正則表達式替換字符串中的單個字符

在某些時候,一個批處理文件名爲分配多個參數:

call c:\script.bat 1 1 16 localhost 1 1 %0% 

它必須成爲:

call c:\script.bat 2 1 16 localhost 1 1 %0% 

我創建了下面的語句來代替regex點組(以這種情況下的第一個)

Regex.Replace(content, @"call c:\script.bat)(.)(1 16 localhost 1)(.)(%0%)","$1.$3$4$5") 

不知怎的,我確定,替換代替匹配的number 1不能替換爲2,因爲替換字符串將訪問非現有組12而不是group 1,並附加字符2

有人可以給我一個線索嗎?

+3

爲什麼必須使用正則表達式?當'.Replace(「1 1 16」,「2 1 16」)'就足夠了時,它就是這樣矯枉過正的。 –

+0

像我正在處理的大文件一樣,我必須確保只有字符串適用於這個特定位置批處理文件被調用 –

回答

0

簡單的解決辦法是沒有捕捉到劃定的空間:

Regex.Replace(content, @"(call c:\script.bat) \d (1 16 localhost 1)(.)(%0%)","$1 2 $3$4$5") 

注:我也用了\d數字字符集。對於大於一位數的數字,您可能需要將其更改爲\d+