我正在尝试找出如何使用正则表达式来匹配任意数量的字符,只要第一个字符不是数字即可。如果我正在检查的字符串部分(结尾)中没有值,我也希望它匹配。
如果我这样做:
Pattern = re.compile (value + r"\D.*")
仅当字符串在匹配值之后至少有一个(非数字)值时才有效。
如果我这样做:
Pattern = re.compile (value + r"\D?.*")
即使第一个值是数字,它也会匹配。
我试图找到零与字符串末尾任何值的匹配项,只要第一个值不是数字即可。
例子:
Check "abc123" against:
"abc123" : Match
"abc123ab" : Match
"abc1234" : Not a match
"abc1234a" : Not a match
"abc123a4" : Match
请您参考如下方法:
听起来您想要一个“否定先行断言”(搜索该术语 here)。
re.compile(value + '(?!\d)')
字面意思是“不(直接)跟一个数字”。
或者,不使用正则表达式(基本思想取自 TigerhawkT3):
not teststring[len(value):][:1].isdigit()
这假定测试字符串以值开头(如果不能保证,您必须检查它)。
