удалить подстроку, начинающуюся с некоторых заданных символов

#python-3.x #re

#python-3.x #python-re

Вопрос:

Есть несколько строк со следующим шаблоном '{substring1}.{substring2}' . Я только хочу сохранить substring1 . Например, для e23.hd я хочу сохранить только e23 .

Вот код для тестирования

 a = 'e23.hd'
import re
re.sub(".*","",a)
a

e23.hd
  

Я пытался использовать .* для представления .{substring2} , кажется, это не работает.

Комментарии:

1. . в регулярном выражении означает «любой символ», поэтому вам придется его экранировать. Попробуйте что-то вроде "..*" , чтобы избавиться от всего после точки.

Ответ №1:

Есть ли какая-либо причина, по которой вы используете регулярное выражение? Это можно решить без регулярного выражения. Но если вы действительно хотите, вот способ регулярного выражения:

 a = 'e23.hd'
import re
re.sub("..*","",a)
print(a)
#'e23'
  

или без регулярного выражения:

 print(a.split(".")[0])
#'e23'
  

или без регулярного выражения, и если возможно несколько «.»:

 print(a.rsplit(".", 1)[0])
#'e23'
  

Комментарии:

1. Вместо того, чтобы заменять то, что вы не хотите, может быть проще (возможно, более производительно / интуитивно?) соответствовать тому, что вы хотите: re.match(r"[^.]*", "e23.hd") .

2. Вы абсолютно правы, я просто хотел придерживаться исходного вопроса как можно ближе.