#python #regex #string #prefix #suffix
#python #регулярное выражение #строка #префикс #суффикс
Вопрос:
Как вырезать все символы из начала и конца строки, которые не являются буквенно-цифровыми?
Например:
print(clearText('%!_./123apple_42.juice_(./$)'))
# => '123apple_42.juice'
print(clearText(' %!_also remove.white_spaces(./$) '))
# => 'also remove.white_spaces'
Комментарии:
1. Где ваша попытка закодировать это?
2.
def removePrefix(text, prefix): if text.startswith(prefix): return text[len(prefix):] return text
До сих пор мне удавалось удалять любой определенный префикс, но это не общее решение. Я все еще пытаюсь выработать какое-то решение для регулярных выражений.
Ответ №1:
Вы могли бы использовать этот шаблон: ^[^a-zA-Z0-9] |[^a-zA-Z0-9] $
Объяснение:
^[^a-zA-Z0-9]
— сопоставьте один или несколько не алфавитно-цифровых символов в начале строки (благодаря ^
)
[^a-zA-Z0-9]$
— сопоставьте один или несколько не алфавитно-цифровых символов в конце строки (благодаря $
)
|
означает чередование, поэтому оно соответствует не буквенно-цифровой строке символов в начале или в конце
Затем достаточно заменить совпадения пустой строкой.
Комментарии:
1. Я вижу! Большое вам спасибо, я вижу, что логика почти такая же, как у @ilamaaa. Я только принял это, чтобы позже можно было увидеть все решение, но как указано!
Ответ №2:
Этот парень захватывает все, что находится между буквенно-цифровыми символами.
import re
def clearText(s):
return re.search("[a-zA-Z0-9].*[a-zA-Z0-9]", s).group(0)
print(clearText("%!_./123apple_42.juice_(./$)"))
Комментарии:
1. Большое вам спасибо! Зачем нужно поле .group(0)? Добавлено ли что-то еще в поиск?
2. удалено, да, я просматривал документы, но явно плохо прочитал, ценю исправление.
3. тогда тоже удалено 🙂