Python 使用正则表达式删除连续点之前的数字
我有一个字符串Python 使用正则表达式删除连续点之前的数字,python,regex,Python,Regex,我有一个字符串Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23 删除点之前和单词之后的所有数字 忽略字符串的第一部分,即“Node57Name123” 如果数字在单词内部,则不应删除它们 尝试了re.sub(r“\d+”,“”,string),但它每隔一个数字就删除一个 输出应如下所示“Node57Name123.grpObject.grp23Symbol.shape.anotherobject.sha
Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23
“Node57Name123”
re.sub(r“\d+”,“”,string)
,但它每隔一个数字就删除一个
输出应如下所示“Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape”
你能给我指一下正确的方向吗。你可以用
re.sub(r'^([^.]*\.)|\d+(?![^.])', r'\1', text)
看
详情:
-除点以外的零个或多个字符,然后在捕获到组1中的字符串开头添加一个^([^.]*\)
字符(从替换模式中以
引用)\1
-或|
-一个或多个数字后跟一个点或字符串结尾(\d+(?![^.])
)(?=\。\124;$)
re.sub(r'^([^.]*\.)|\d+(?![^.])', r'\1', text)
看
详情:
-除点以外的零个或多个字符,然后在捕获到组1中的字符串开头添加一个^([^.]*\)
字符(从替换模式中以
引用)\1
-或|
-一个或多个数字后跟一个点或字符串结尾(\d+(?![^.])
)(?=\。\124;$)
只是给你一个非正则表达式的替代“使用”。我们可以向该函数提供一组字符,以便从字符串右侧删除,例如:
rstrip('0123456789')
。或者,我们也可以使用模块中的数字常量:
印刷品:
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
编辑: 如果您必须使用常规模式,则以下内容似乎涵盖了您的示例:
(\.[^.]*?)\d+\b
替换为第一个捕获组,请参阅联机
-打开捕获组:(
-一个文字点,后跟0+非点字符(惰性)\..[^.]*?
-关闭捕获组)
-将1+个数字匹配到单词边界\d+\b
import re
s = 'Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23'
x = re.sub(r'(\.[^.]*?)\d+\b', r'\1', s)
print(x)
印刷品:
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
只是给你一个非正则表达式的替代“使用”。我们可以向该函数提供一组字符,以便从字符串右侧删除,例如:
rstrip('0123456789')
。或者,我们也可以使用模块中的数字常量:
印刷品:
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
编辑: 如果您必须使用常规模式,则以下内容似乎涵盖了您的示例:
(\.[^.]*?)\d+\b
替换为第一个捕获组,请参阅联机
-打开捕获组:(
-一个文字点,后跟0+非点字符(惰性)\..[^.]*?
-关闭捕获组)
-将1+个数字匹配到单词边界\d+\b
import re
s = 'Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23'
x = re.sub(r'(\.[^.]*?)\d+\b', r'\1', s)
print(x)
印刷品:
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
天哪,你是救世主,不到几分钟,你就回答了。就个人而言,你能给我指一个更好地理解regex的指南吗?@PratikV I,因为很多人都问我同样的问题。天哪,你是救世主,不到几分钟,你就回答了。就个人而言,你能给我指一个更好地理解regex的指南吗?@PratikV I,因为很多人都问我同样的问题。