2017-02-19 6 views
0

私のパターンと指定した文字列を比較しようとしています(一般的に私はファイルを読み込みませんが、今のところどのように動作するかを見るために明示的な文字列を使用します))与えられた行のスクリプトは私の望むように動作しません。希望するパターンを抜き出す方法(文字列)

私はここで達成しようとしています何
import re 

regex = '.+0+[0-9]+.' 
string = "Your order number is 0000122995" 

print (re.match(regex,string)) 

はこの0000*番号を検索し、変数(私は後で Excelに置きたい)に割り当てることであるが、与えられた正規表現がある行全体を、一致しました私が得ようとしているものではない(私はそれが構文のためにあることを知っています)。どのようにこれを克服するためのヒント?

+0

'(0 {4})[0-9] +' – ZdaR

+0

を試してみました。 'None'オブジェクトを返します。私は、それが完全一致した場合に小さなパターンではなくオブジェクトを返すかもしれないが、 '一致'関数にも接続することができると信じている。 –

+3

@PawełMotyka 're.match'は、検索を文字列の先頭にアンカーします。あなたは' re.search'をしたいと思います。例えば 're.search(r '(0 {4} \ d +)'、 'あなたの注文番号は0000122995です) " –

答えて

0

の文字列に一致するものを見つける場合は、re.match()の代わりにre.search()を使用してください。 re.match()は、文字列の先頭でのみ一致するかどうかを確認し、re.search()では文字列のどこでも一致するかどうかを確認します。

import re 
regex = r'(0{4}\d+)' 
string = "Your order number is 0000122995" 

print (re.search(regex, string).group(0)) 

re.search()re.match()一致がある場合にマッチオブジェクトを返します。 match.group()を使用すると、一致の1つまたは複数のサブグループが戻されます。

詳細については、re.search()のドキュメントを参照してください。

0

あなたの質問では、あなたが示したようにあなたの質問が一貫していることが期待されるならば、(あなたの注文番号は無視され、空白や文字列の終わりに達するまで):

def findOrder(): 
     import re 
     string = "Your order number is 0000122995" 
     arrayAnswer = re.findall('Your order number is ([\S]+)', string) 
     print('Your number in an Array is:') 
     print(arrayAnswer) 
     print('') 
     print('Your number(s) output as a "string(s)" is/are:') 
     for order in arrayAnswer: 
       print(order) 

findOrder()を必ず呼び出して実行します。あなたが欲しいものを排他的に数字、下の文字とスペースとリターン番号除外含まれていることを指摘、もう少し「regexy」を取得するためにワン場合:再度

def findOrder(): 
     import re 
     string = "Your order number is 0000122995" 
     arrayAnswer = re.findall('[a-zA-Z\s]+([\d]+)', string) 
     print('Your number in an Array is:') 
     print(arrayAnswer) 
     print('') 
     print('Your number(s) output as a "string(s)" is/are:') 
     for order in arrayAnswer: 
       print(order) 

を、)(findOrderを呼び出すことを確認することによって、これを実行します。両方のための

あなたのOUTPUTはこのようになります。

>>> findOrder() 
Your number in an Array is: 
['0000122995'] 

Your number(s) output as a "string(s)" is/are: 
0000122995 

私は疑う、しかし、あなたはあなたが投稿した文字列よりも長いクエリで作業することをお勧めします。さらに必要なものがあれば投稿してください。

関連する問題