我正在尝试匹配一个字符串,其中只有一位数字。例如' 5',' 4',' 3'等我在python中使用re
库来帮助我使用正则表达式。
我有以下三个用各自的if语句设置的标志:
import re
if re.match(r'\d{2}:\d{2}:\d{2}', item):
timeflag = True
if re.match(r'\d{4}', item):
voltflag = True
if re.match(r'^\d{1}', item):
socflag = True
这是一个奇怪的部分:当我传递一个值为'2754'
的项目时,socflag
仍设置为True
,即使它只应该是真的只匹配一个数字的字符串,如'5'
。
我怀疑我的正则表达式语法不正确。那么,如何使用python regex匹配一位数字符串?
答案 0 :(得分:3)
如果它由1位数字组成,则不包含其他内容:
In [138]: %timeit using_numpy(df_p, df_c, df_f)
1000 loops, best of 3: 1.15 ms per loop
In [139]: %timeit using_pandas(df_p, df_c, df_f)
1000 loops, best of 3: 1.62 ms per loop
如果它可以包含其他非数字字符:
re.match('^\d$', item)
通过使用re.match('^\D*\d\D*$', item)
启动正则表达式,您只需确保在正则表达式测试中使用^
的第一个字符。通过最后使用item
,您将确保在正则表达式测试中使用$
的最后一个字符。通过以显示的方式同时使用item
和^
,您将确保在测试中使用 all $
的字符。
你的正则表达式允许在找到的第一个数字和item
字符串的结尾之间发生任何数量的事情。
这是测试正则表达式的绝佳资源:
答案 1 :(得分:1)