5

我的目标是读取一个字符串,并在哪里找到整数或十六进制数,将其替换为“[0-9]”我的字符串是:

a = hello word 123 with the 0x54673ef75e1a
a1 = hello word 123 with the 0xf
a2 = hello word 123 with the 0xea21f
a3 = hello word 123 with the 0xfa

尝试过以下操作:

b = re.sub(r"(\d+[A-Fa-f]*\d+[A-Fa-f]*)|(\d+)","[0-9]",a)

得到以下输出:

hello word [0-9] with the [0-9]x[0-9]a
hello word [0-9] with the [0-9]xf
hello word [0-9] with the [0-9]xea[0-9]
hello word [0-9] with the [0-9]xfa

但输出应该是这样的:

hello word [0-9] with the [0-9]
hello word [0-9] with the [0-9]
hello word [0-9] with the [0-9]
hello word [0-9] with the [0-9]
4

2 回答 2

1

利用

re.sub(r"(0x[\da-fA-F]+)|(\d+)","[0-9]",a)

http://ideone.com/nMMNJm

于 2012-12-19T07:54:58.593 回答
1

你的模式应该是这样的

b = re.sub(r"(0x[a-fA-F0-9]+|\d+)","[0-9]",a)

区分十六进制和十进制值。

于 2012-12-19T07:52:53.153 回答