#python #regex
Вопрос:
Поэтому в настоящее время я использую python.
Как я могу просмотреть HTML-файл и заменить все вхождения:
<a href="#some_snake_case_text">
и превратите его в:
<a href="#somesnakecasetext">
независимо от текста, который находится внутри href?
Итак, я собирался использовать регулярное выражение, я уже пару часов, и мне не удалось сопоставить «_» между тегом href, чтобы удалить их… Я не могу просто сопоставить слово и выполнить замену всех cu, которая фактически заменила бы все те, которые не предназначены для всего документа.
Я попробовал это, чтобы вычислить все «_»
<a href="#(.*(_).*) ">
или все, кроме подчеркиваний:
<a href="#([^_]_?) ">
чтобы потом, может быть, заменить его?!
Как я могу это сделать?
Комментарии:
1. Пожалуйста, пожалуйста, также озвучьте полезные ответы ниже, спасибо.
Ответ №1:
С заменой метода:
import re
def subst(x):
return x.group().replace('_', '')
s = 'xxx <a href="#some_snake_case_text"> xxx'
p = r'<as href="#[^"]*">'
print(re.sub(p, subst, s))
Результаты: xxx <a href="#somesnakecasetext"> xxx
объяснение
--------------------------------------------------------------------------------
<a '<a'
--------------------------------------------------------------------------------
s whitespace (n, r, t, f, and " ") (1 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
href="# 'href="#'
--------------------------------------------------------------------------------
[^"]* any character except: '"' (0 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
"> '">'
Ответ №2:
Вы можете использовать re.sub
:
import re
s = '<a href="#some_snake_case_text">'
new_s = re.sub('(?<=href=")[^"] ', lambda x:''.join(x.group().split('_')), s)
Выход:
'<a href="#somesnakecasetext">'