#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. Вы абсолютно правы, я просто хотел придерживаться исходного вопроса как можно ближе.