2017-02-23 5 views
-1

本当にありがとうございます。Pythonは複数のREGEXマッチを関数に渡します。

私は* code *として指定した区切りタグの間にいくつかのテキストを正常に取り込んでいます。私は複数のIE:*コード*コードをここに#1 *コード*とし、*コード*コードをここで#2 *コード*とします。私は、REGEXのキャプチャされたコードを*コード*マーカーの間でフォーマットするために私のクラスに渡すことに苦労しています。それは常に "ここにコード#1"として繰り返し表示されます。ここで

The input text is: 

*image1* 
Some More Text here 

That's a title pic and there are 2 more enable pictures per page. 
*code* CENTER CODES HERE *code* Those can be a bit larger. And then  there is more 
code to show *code* MORE CENTER CODE *code* 

Paragraph Test 

は、私は、テキストをキャプチャして、反復したものです:

replace = CodeboxReplace() 
    codeboxRE = re.compile('\*code\*(.*?)\*code\*') 
    found = codeboxRE.findall(thisText) 
    for item in found: 
     thisText = codeboxRE.sub(replace(item), thisText) 

OKし、クラスCodeboxReplace()は次のようになります{CODEHEREは}に置き換えるべきIが所定の位置に持っているタグですコード区切り文字の間にマッチした実際のコード:

class CodeboxReplace(object): 
def __init__(self): 
    self.counter = 0 

def __call__(self, match): 
    self.counter += 1 
    .......some not relevant code here................ 
    codeHereRE = re.compile('{CODEHERE}') 
    found = codeHereRE.findall(myCode) 
    for item in found: 
     myCode = codeHereRE.sub(match, myCode) 
    return myCode 

だから、基本的に、私はトンとの間に捕捉コードスニペットをしたいです彼は区切り記号{CODEHERE}を置き換える。しかし、各試合は常にREGEXからの最初のキャプチャのみを使用します。

ヘルプ!ありがとう!あなたはそれを見てレンダリング方法を確認したい場合は

http://www.americantechnocracy.com/getArticle

敬具は、 トム

+1

これは本当に[MCVE](https://stackoverflow.com/help/mcve)ではありません。あなただけの1れる発生を置き換えたい場合は、サブパラメータを使用します。あなたは、あなたが望むものを示すかもしれないコードの部分を省略しています。私は '* code *(...)* code *'の最初の一致をキャプチャして、クラス内の別のテキストの '{CODEHERE} 'の最初の一致を置き換えたいと思っています。これは本当ですか? –

答えて

1

正規表現オブジェクトのサブ方法は、すべて非重複、occurrancesを置き換えますパターンのしたがって、これが初めて実行されたときには、次のようになります。 '{CODEHERE}'のすべての出現箇所を置き換えます。

myCode = codeHereRE.sub(match, myCode, count=1) 
+0

感謝!あなたはそれが正しいと思っています - カウント= 1は問題を解決します。私はそれを呼び出しre.subに配置しなければならなかった... ie:thisText = codeboxRE.sub(replace(item)、thisText、count = 1)は問題を解決します。実際の置換関数にcount = 1を置くことは、複数のタグの置換がより高いレベルの一致で起こっているのを助けるものではありません...しかし大きな大きな助けが大いにありがとう –

関連する問題