Python 3.x 删除以某些给定字符开头的子字符串

Python 3.x 删除以某些给定字符开头的子字符串,python-3.x,re,Python 3.x,Re,有些字符串具有以下模式“{substring1}.{substring2}”。我只想保留子字符串1。例如,对于e23.hd,我只想保留e23 下面是一个测试代码 a = 'e23.hd' import re re.sub(".*","",a) a e23.hd 我尝试使用.*来表示.{substring2},它似乎不起作用。您使用regex有什么原因吗?这可以在没有正则表达式的情况下解决。 但如果你真的想,这里是正则表达式的方式: a = 'e23.h

有些字符串具有以下模式“{substring1}.{substring2}”。我只想保留子字符串1。例如,对于e23.hd,我只想保留e23

下面是一个测试代码

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

e23.hd

我尝试使用.*来表示.{substring2},它似乎不起作用。

您使用regex有什么原因吗?这可以在没有正则表达式的情况下解决。 但如果你真的想,这里是正则表达式的方式:

a = 'e23.hd'
import re
re.sub("\..*","",a)
print(a)
#'e23'
或不带正则表达式:

print(a.split(".")[0])
#'e23'
或者不带正则表达式,如果有多个。有可能:

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

你使用正则表达式有什么原因吗?这可以在没有正则表达式的情况下解决。 但如果你真的想,这里是正则表达式的方式:

a = 'e23.hd'
import re
re.sub("\..*","",a)
print(a)
#'e23'
或不带正则表达式:

print(a.split(".")[0])
#'e23'
或者不带正则表达式,如果有多个。有可能:

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

. 在regexp中表示任何字符,因此必须对其进行转义。尝试像\…*这样的方法来清除点后的所有内容。。在regexp中表示任何字符,因此必须对其进行转义。尝试像\…*这样的方法来去掉点后的所有内容。与其把你不想要的东西分出来,不如更容易些,也许更直观?为了匹配您想要的内容:re.matchr[^.]*,e23.hd。您完全正确,我只是想尽可能接近原始问题。与其细分出您不想要的内容,可能更容易实现/更直观?为了匹配您想要的内容:re.matchr[^.]*,e23.hd。您完全正确,我只想尽可能接近原始问题。