Мне нужно совместить объекты с именем согласно спецификации файла PDF. Однако имена могут содержать шестнадцатеричные цифры (предшествующие #) для указания специальных символов. Я хотел бы перевести эти совпадения на соответствующие символы. Есть ли разумный способ сделать это без повторного разбора строки соответствия?Перевод регулярных выражений групп
import re
Name = re.compile(r'''
(/ # Literal "/"
(?: #
(?:\#[A-Fa-f0-9]{2}) # Hex numbers
| #
[^\x00-\x20 \x23 \x2f \x7e-\xff] # Other
)+ #
) #
''', re.VERBOSE)
# some examples
names = """
The following are examples of valid literal names:
Raw string Translation
1. /Adobe#20Green -> "Adobe Green"
2. /PANTONE#205757#20CV -> "PANTONE 5757 CV"
3. /paired#28#29parentheses -> "paired()parentheses"
4. /The_Key_of_F#23_Minor -> "The_Key_of_F#_Minor"
5. /A#42 -> "AB"
6. /Name1
7. /ASomewhatLongerName
8. /A;Name_With-Various***Characters?
9. /1.2
10. /$$
11. /@pattern
12. /.notdef
"""
Вы хотите заменить это на входной строке? Или вы хотите перечислить совпадающие имена с неубедительными escape-последовательностями? –
Можете ли вы использовать 're.sub'? –
@MartijnPieters - 'список совпадающих имен с escape-последовательностями unescaped' – root