我有一個文本包含可能由正則表達式「[1-9]?[0-9]。[1-9]?[0-9 ]。[1-9]?[0-9]。」正則表達式,可選地匹配字符串的開頭
不,我想執行定期更換,在沒有第一個數字時在每個部件的前面放置一個「0」。例如,字符串「1.10.3」會變成「01.10.03」。
我的問題是,我不知道如何捕獲第一位數字當且僅當第一部分中沒有第二位數字時。使用類似「。?([0-9])[^ 0-9]」的東西即使有另一個也會捕獲第一個數字。所以「12.3.4」會變成「02.03.04」或「102.03.04」。
你有任何想法,如果有任何正則表達式匹配這種情況下?
[編輯:]
我使用VBScript Regexp Object V5.5其supports lookaheads。
我試圖使用由the answer of Mark Byers提供的正則表達式:
Set re = New RegExp
re.Global = True
re.Pattern = "(?:^|[^0-9])([0-9])(?![0-9])"
Dim x As String
x = "1.3.4 string"
x = re.replace(x, "0$1")
MsgBox (x)
遺憾的是這段代碼的結果是「010304串」 - 該點被剝奪。我嘗試修改模式以匹配像「(?:^ | [^ 0-9])([0-9])([。])」這樣的點和空格,然後替換爲「0 $ 1 $ 2」,但是結果是一樣的。
你有什麼想法可能是什麼問題?
您正在使用什麼語言HTH?正則表達式根據語言不同而不同。 –
注意你可以(通常)使用'\ d'來代表'[0-9]'和'\ D'來表示非數字符號。 – DavidEG
@MarkByers:這就是爲什麼我寫「(通常)」;) – DavidEG