0

我想编写一个程序来检查是否以给定数字开头的字符串。假设我们有一个字符串: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 时,它会在行以 5 开头时打印“OK”或类似的东西,或者当我的行以不同的数字开头时打印“Its not OK”。我是整个正则表达式的新手,请帮忙:) 我接受 C++ 和 Python 的代码;)

4

5 回答 5

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 objectTrue在布尔上下文中评估的结果。如果没有匹配,它将返回Nonewill evaluates to False

于 2013-01-24T10:31:48.137 回答
2

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

^(\d).*

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

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

于 2013-01-24T10:43:12.557 回答
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"
于 2013-01-24T10:37:06.163 回答
0

我会回应上面的回应:正则表达式对于这个问题来说太过分了。如上所述使用startswith。

于 2013-01-24T13:25:50.770 回答
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"
于 2013-01-24T11:01:12.867 回答