我有一个代码,该代码将字符串作为输入并丢弃所有字母,并且仅在任何位置仅打印不包含9的数字。 我决定在正则表达式的帮助下完成此操作,但是找不到需要修改的表达式来实现它?
我也尝试过使用[^ 9],但是它不起作用。
import re
s=input().lstrip().rstrip()
updatedStr=s.replace(' ','')
nums=re.findall('[0-8][0-8]',updatedStr)
print(nums)
该代码应在任何位置完全丢弃包含9的数字。
例如,如果输入是: “这是67和98”
输出:['67']
输入:“这是数字678975或56783或87290,就是这样”
输出:['56783'](因为其他两个数字在某些地方包含9)
答案 0 :(得分:1)
我认为您应该尝试使用:
Require Import ZArith. (* I assume you already imported this, since you're using Z *)
Definition verify_eq (first : Z) (second : Z) : Z :=
if Z.eqb first second then 0 else 1.
相反。
[0-8] + 表示“ 一个或多个出现0到8的数字”
我尝试了:12313491 a asfasgf 12340 asfasf 123159
并得到:['123134','1','12340','12315']
(您的代码返回数组。如果要连接数字,则应添加一些代码)
答案 1 :(得分:1)
听起来好像您不希望匹配不包含9的所有数字。 您的模式应与任何不包含9的数字字符串匹配,但结尾应以非数字开头
pattern = re.compile('(?<=[^\d])[0-8]+(?=[^\d])')
pattern.findall(inputString) # Finds all the matches
这里的模式正在做几件事。
inputString不需要剥离。实际上,如果字符串的开头或结尾有数字,则此模式可能会出现问题。为了防止这种情况。只需用任何字符填充它即可。
inputString = ' ' + inputString + ' '
查看python re docs以获得更多信息