2017-01-31 48 views
0

私はパターンと呼ばれるクラスを持っており、その中にequatesとsetwildcardという2つのメソッドがあります。等号は、部分文字列が最初の文字列に表示されているインデックスを返し、setwildcardは、サブストリングにワイルドカード文字を設定しますPythonでのワイルドカードの照合

ので

p = Pattern('xyz') 
t = 'xxxxxyz' 
p.equates(t) 

返します。また4

​​

*はワイルドカードであり、xとzが一致する限り、t内の任意の文字と一致することができるので、4を返します。 これを実装する最も良い方法は何ですか?

+1

StackOverflowへようこそ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。一般的に、このような問題に対処する「正しい」方法は、* some *ソリューションを実装し、CodeReview.StackExchange.comの改善を求めることです – Prune

答えて

0

基本的に正規表現のサブセットを実装しているようです。幸いにも、Pythonには、その組み込みのライブラリがあります!正規表現(または、友人が正規表現と呼んでいるように)の仕組みに慣れていない場合は、documentation for themを読むことを強くお勧めします。

いずれにしても、機能re.searchは、あなたが探しているものです。一致するパターンを第1引数としてとり、第2引数として一致させる文字列を返します。searchSRE_Matchオブジェクトを返します。#start()メソッドは便利です。マッチが始まるインデックス。 - ない* - あなたが使用しているパターンでそれらを交換する必要がありますので、ワイルドカードは、ある、.、正規表現で

import re 
start_index = re.search(r'x.z', 'xxxxxgzg').start() 

注:

はあなたの例からのデータを使用するには。

関連する問題