0

与えられた数字で始まる文字列かどうかをチェックするプログラムを書きたいです。たとえば、文字列があります。line = "5p.m. its a lovely time for tea!"次に、user:から番号を読み取り、num = raw_input()ユーザーが渡した番号で行が始まっているかどうかを確認します。

私は次のようなことをしたいです(ここにいくつかの間違いがあるかもしれません):

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

また

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

また、ユーザーが5を渡すと、行が5で始まる場合は「OK」などと表示され、行が別の番号で始まる場合は「ItsnotOK」と表示されます。私はこの正規表現全体の非常に初心者です、助けてください:)私は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 objectTrueNoneFalse

于 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
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 に答える
0

上記の応答を繰り返します。正規表現は、この問題に対して過剰です。上で指摘したように、startswith を使用します。

于 2013-01-24T13:25:50.770 に答える