7

私はPython(実際にはpl/python)を使用して、非常に大きなテキストオブジェクトで一連の正規表現の一致を連続して見つけています。これはうまくいっています!各一致は異なる結果であり、各置換は最終的にループ内のクエリに基づいて異なる結果になります。

今のところ、rx のすべての一致を任意のテキストに置き換えて、それがどのように機能するかを理解していただければ幸いです。誰かが一致したテキストを置き換える明示的な例を教えてもらえますか?

match.group(1)は、一致したテキストを正しく示しているようです。これは物事を行う方法ですか?

plan3 = plpy.prepare("SELECT field1,field2 FROM sometable WHERE indexfield = $1", 
  [ "text" ])

rx = re.finditer('LEFT[A-Z,a-z,:]+RIGHT)', data)

# above does find my n matches...

# -------------------  THE LOOP  ----------------------------------
for match in rx:
 # below does find the 6 match objects - good!

 # match.group does return the text
 plpy.notice("--  MATCH: ", match.group(1))

 # must pull out a substring as the 'key' to an SQL find (a separate problem)
 # (not sure how to split based on the colon:)
 keyfield = (match.group(1).split, ':')
 plpy.notice("---------: ",kefield)

try:
 rv = plpy.execute(plan3, [ keyfield ], 1 )

# ---  REPLACE match.group(1) with results of query
# at this point, would be happy to replace with ANY STRING to test...
except:
 plpy.error(traceback.format_exc())

# -------------------  ( END LOOP )  ------------------------------
4

1 に答える 1

9

re.sub()代わりに欲しい。

import re

def repl(var):
  return var.group().encode('rot13')

print re.sub('[aeiou]', repl, 'yesterday')

年始

于 2011-06-20T02:14:53.847 に答える