Удалите все символы, кроме тех, которые содержатся внутри двух букв, используя RegEx - PullRequest
0 голосов
/ 16 апреля 2019

Используя Python и регулярные выражения, мне нужно удалить определенный символ (например, -) из строки, за исключением случаев, когда это один символ, помещенный между двумя буквенными символами.

Например:

'--abc-def - --g--h 1-2'  ==> 'abc-def  gh 12'

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете использовать это регулярное выражение:

(?<![a-zA-Z])-|-(?![a-zA-Z])

как это:

result = re.sub(r"(?<![a-zA-Z])-|-(?![a-zA-Z])", "", your_string)
# or with re.I
result = re.sub(r"(?<![a-z])-|-(?![a-z])", "", your_string, re.I)

Пояснение:

Регулярное выражение может соответствовать одной из следующих двух вещей:

  • -, перед которым нет буквы: (?<![a-zA-Z])-
  • -, который не имеет letter после него: -(?![a-zA-Z])

A -, окруженный буквами, не удовлетворяет ни одному из указанных выше требований, поэтому он не будет сопоставлен.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...