如何编写以给定数字开头的正则表达式?

时间:2013-01-24 10:29:32

标签: python regex

我想写一个程序来检查一个以给定数字开头的字符串。 可以说,我们有一个字符串:line = "5p.m. its a lovely time for tea!"和 然后我从用户那里读了一个数字:num = raw_input()并想检查是否 我的行以用户传递的数字开头。

我想做点什么(这可能是一些错误):

s = compile(r"^[\<%\>]", num)
m = s.search(line)

s = compile(r"^[\<%\>]", num)
m = s.search(line)

当用户传递5时,它会在行时打印“OK”或类似的内容 当我的行以不同的数字开头时,以5开头,或者“它不正常”。 我是这个整个正则表达式的新手,请帮助:)我接受C ++和Python的代码;)

5 个答案:

答案 0 :(得分:5)

正则表达式过度:

line = '5p.m. its a lovely time for tea!'
num = raw_input()  # integer input
if line.startswith(num):
    print 'OK'
else:
    print 'It\'s not OK'

如果您需要使用regex,则可以执行此操作:

if re.search('^%s' %num, line):  # checks if there is a match
    print 'OK'
else:
    print 'It\'s not OK'

这样做的原因是因为如果匹配,re.search将返回_sre.SRE_Match object将在布尔上下文中评估为True。如果没有匹配,则返回None将评估为False

答案 1 :(得分:2)

我不知道c ++和python编码 但你想要的正则表达式只是

^(\d).*

您可以使用http://regexpal.com/检查结果

PS。对不起,我尝试发布图片,但他们不允许,所以点击链接看 http://i.stack.imgur.com/qwBjJ.png

答案 2 :(得分:1)

import re
number = 5
line = "5p.m. its a lovely time for tea!"
s = compile("^%d" % num)
m = s.search(line)

if m:
  print "time for tea"

答案 3 :(得分:0)

import re

line = "5p.m. its a lovely time for tea!"

match_obj = re.search('^([0-9]+).*', line)

num = raw_input()

if num == match_obj.groups()[0]:

    print "OK"

else:

    print r"It's not ok"

答案 4 :(得分:0)

我会回应上面的回答:正则表达式对这个问题有点过分。如上所述,使用startwith。