Форум сайта python.su
4
Есть код наподобие этого.
#!/usr/bin/python3 import re nbspace=' ' debug_mes='' default_line_break='\n' regexp=315 line=' on page 13 indicates' my_expr=' on( page)\s(\d+ indicates)' match=re.search(my_expr,line) while match: replace_what=match.group(0) replace_with=match.group(1)+nbspace+match.group(2) line=line.replace(replace_what,replace_with) debug_mes=debug_mes+'regexp '+str(regexp)+':'+replace_with+default_line_break match=re.search(my_expr,line) print(debug_mes)
Офлайн
58
Вы хотите иметь возможность редактировать регеспы в текстовом режиме?
Офлайн
4
4kpt_IIВ каком-то смысле, да. У меня одна строка, содержащая регулярные выражения, заменяется другой. Я хочу вынести вне скрипта образец (pattern) контекста для замены и то, чем я хочу заменить этот образец. Ситуация усложняется тем, что замена частично состоит из групп образца. Другими словами, надо правильно сконвертировать строку в регулярное выражение. Есть re.compile, однако ведь replace работает только со строками. Грубо говоря, мне нужно примерно такое:
Вы хотите иметь возможность редактировать регеспы в текстовом режиме?
my_expr=' on( page)\s(\d+ indicates)' replace_with='re.search(my_expr,line).group(1)+nbspace+re.search(my_expr,line).group(2)'
line=line.replace(my_expr,replace_with)
Отредактировано vanvanov (Июнь 19, 2014 23:52:30)
Офлайн
857
>>> import re >>> >>> pat = r'(.+)x(.+)' >>> rep = r'[\2\2][\1\1]' >>> >>> s = 'abcxdef' >>> >>> re.sub(pat, rep, s) '[defdef][abcabc]' >>>
Офлайн