Как скопировать скомпилированное регулярное выражение? - PullRequest
0 голосов
/ 13 апреля 2020

Есть ли указанный способ в Python 3 для копирования скомпилированных регулярных выражений? Следующий код выдает TypeError (то же самое с deepcopy), и я не уверен, откуда go.

import re
import copy

p = re.compile( r'foo' )
copy.copy(p) # TypeError: cannot copy this pattern object

Я думал о создании копии вручную с помощью:

p_copy = re.compile(p.pattern, p.flags)

но мне интересно, верно ли это для всех возможных регулярных выражений; если бы это было так просто, то почему бы справочной библиотеке не реализовывать копию таким образом?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Поскольку скомпилированные регулярные выражения являются неизменными, новая ссылка фактически совпадает с копией.

p = re.compile( r'foo' )
p_copy = p

(Если после написания вышеизложенного содержание p_copy не подходит для ваших целей, укажите больше контекста в вашем вопросе!)

0 голосов
/ 13 апреля 2020
import re
from pyperclip import copy
p = re.compile( r'foo' )
copy(str(p))

или

import re
from pyperclip import copy
p = re.compile( r'foo' )
output = str(p).split("'")[1]
copy(output)

Либо, если вы имеете в виду фактическое значение регулярного выражения:

использование:

p = re.match( r'foo' ,'foo string')
print(p.group(0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...