Как вырезать не алфавитно-цифровой префикс и суффикс из строки в Python?

#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. тогда тоже удалено 🙂