我有一个文本包含可能由正则表达式“[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