2015-06-19 58 views
1

我需要一個正則表達式搜索&替換對將從字符串中刪除'n'個字符,從某個可定義的位置開始。例如,刪除從位置5開始的3個字符。在這種情況下,字符串如何僅刪除位置字符串中的字符?

AAA。 01數據從七月

將成爲

AAA。從7月份的數據

(不知道是不是我已經開始在合適的地方重新0/1計算。這是一個原因,我需要一個通用的解決方案。)

可以假定這些字符串將足夠長時間來支持該操作,但如果它對於太短的字符串不做任何事情,那將是非常好的。

我工作的應用程序有一個VBScript正則表達式引擎。我在網上搜索了我對這個請求的每一個變化,我可以想像,但即使有所有的正則表達式,這似乎是新的。我認爲這幾乎是食譜。我也嘗試過自己做,但不知道如何將引擎放置在捕捉點。

+3

你應該用繩子長度和子做到這一點,而不是正則表達式。 – brandonscript

+0

希望這是一個選項,但我只有正則表達式。我認爲解決方案是捕獲第一組(本例中爲5),然後再移動3個字符,然後捕獲最後一組。然後做一個替換隻有兩個捕獲的組。但我寫不出來。 – user3757155

+1

您正在使用VBScript,並且您沒有使用子字符串的選項? – brandonscript

回答

1

假設,你的應用程序中包含的選項來配置更換,你可以使用反向引用替換這樣的:

(.{5}).{3}(.*) 
  • (.{5})前5個字符
  • .{3}消耗接下來的三個字符相匹配
  • (.*)匹配所有其餘字符

反向引用替換\1\2(取決於應用程序\\1\\2$1$2)將連接匹配組1和2,因此基本上刪除第二個表達式的三個字符,因爲它們不構成匹配組。

https://regex101.com/r/aC8fQ9/2

+0

謝謝dognose。這正是我需要的。我希望它也能幫助其他人,因爲它在網絡搜索中不會很容易出現。 – user3757155

0

有了固定的位置/長度,你也可以使用Mid功能:

Function RemoveSubstring(str, start, length) 
    RemoveSubstring = Mid(str, 1, start - 1) & Mid(str, start + length) 
End Function