我想写一个程序来检查一个以给定数字开头的字符串。
可以说,我们有一个字符串: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的代码;)
答案 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。