[英]Why does my regular expression in Python not capture integers?
我正在使用正则表达式查找未用0x
的数字序列。
例如。
0
50505
20201
0012
我的正则表达式是(?:[^(0x)]\\d+)
,该表达式(在我的脑海中)转换为匹配不是以0x
任何数字序列。 但这不起作用-我错误地做出了什么假设?
正则表达式中的[^(0x)]
匹配非(
, 0
, x
, )
任何字符。
在后面使用负数:
>>> re.findall(r'(?<!0x)\d+\b', '0 0x111 50505 20201 0012')
['0', '11', '50505', '20201', '0012']
来自http://docs.python.org/2/library/re.html
(?<!...)
如果字符串中的当前位置之前没有...的匹配项,则匹配。这称为否定性后向断言。 类似于肯定的后置断言,所包含的模式必须仅匹配某个固定长度的字符串。 以否定的后向断言开头的模式可以在要搜索的字符串的开头匹配。
UPDATE
使用以下正则表达式:
>>> re.findall(r'\b\d+\b', '0 0x111 50505 20201 0012')
['0', '50505', '20201', '0012']
对于任何不以[0或x]开头的内容,它看起来像是一个非捕获组。
您是否尝试过负面观察?
(r'(?<!0x)\d+')
(花了我很长时间在电话上键入此消息,现在我看到有人已经对其进行了排序。经验教训:电话上没有正则表达式。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.