说我有一个字符串:
some_string = 'lorum ipsum 123 bar foo 1. \
more text 46 here 2. some more text here \
3. and even more text here 789'
如何使用Regex(或任何其他方法)删除除带句点的数字以外的所有数字?
理想的结果:
some_string = 'lorum ipsum bar foo 1. \
more text here 2. some more text here \
3. and even more text here'
我是Regex初学者,只尝试过[0-9]\.
,但这突显了我想保留的内容。
我想保留1.
,2.
等形式的数字
谢谢。
答案 0 :(得分:2)
您也可以使用[0-9](?!\.)
作为表达式。
这是向前看的示例,本质上是询问下一个字符是否不是'。然后考虑一下。
如果要查找多个数字(例如41),则也可以使用
[0-9](?![0-9]+\.|\.)
我会用here来作为一个事后回顾和向前看的例子,并进行一个游戏here进行测试。
祝你好运!
答案 1 :(得分:1)
我们可以尝试匹配以下模式:
\s*[0-9]+([^.]|$)
在这里,我们匹配一些可选的空格,后跟任意数量的数字,然后依次跟着除点以外的任何 other 字符。我们捕获此非点字符,然后在替换中使用它。
some_string = 'lorum ipsum 123 bar foo 1. \
more text 46 here 2. some more text here \
3. and even more text here 789'
some_string = re.sub(r"\s*[0-9]+([^.]|$)", r"\1", some_string)
print(some_string)
lorum ipsum bar foo 1. more text here 2. some more text here
3. and even more text here
我假设您要保留的数字永远不会包含小数部分。