如何使用正则表达式删除字符串开头的数字模式

How to remove a digit pattern at the beginning of a string with regex

提问人:zDJ 提问时间:7/28/2022 最后编辑:zDJ 更新时间:11/18/2023 访问量:480

问:

我有一个这样的字符串,“123.234.567 删除此字符串中的数字”。输出应为“删除此字符串中的数字”。

此字符串中的数字遵循模式 xx.xxx.xxxxx...(数字后跟句点),但句点数和每个句点之间的位数不是静态的。这里有几个例子。xx.xxxxxx.xxxx.xxxxxxxx、x.xx.xxxx.xxxxxxxx.xx.xxxxx、x.xx.xxxxxx等。

如何删除正则表达式中后跟句点的这些数字?

到目前为止,我有这样的东西:

patt = re.compile('(\s*)[0-9].[0-9]*.[0-9]*(\s*)')

但这仅适用于特定格式。

Python 正则表达式

评论

1赞 Barmar 7/28/2022
如果你想从字面上匹配它,你必须逃脱。否则,它匹配任何字符。.
0赞 Barmar 7/28/2022
您的问题不清楚。标题询问如何从字符串的开头删除模式,但问题似乎询问如何编写模式。它是什么?
0赞 pho 7/28/2022
从您的问题中不清楚您的输入是什么,您要删除什么以及输出是什么。请提供示例输入和输出。
0赞 Barmar 7/28/2022
[0-9]仅匹配一位数。如果要匹配任意位数,请使用 .[0-9]+

答:

2赞 Barmar 7/28/2022 #1
  • 用于匹配字符串的开头。^
  • 用于匹配任意数量的位数。\d+
  • 用于匹配文本字符\..
  • 放入一个组,以便您可以对其进行量化以匹配任意数量的组。\.\d+()
  • 用于将其替换为空字符串以删除匹配项。re.sub()
  • 使用原始字符串,这样您就可以在正则表达式中放置文字反斜杠,而不必对它们进行转义。
patt = re.compile(r's*^\d+(?:\.\d+)+\s*')
string = patt.sub('', string)