python正则表达式re.match

python正则表达式re.match,python,regex,Python,Regex,大家好,我目前正在做一个python正则表达式练习,以上是我目前的代码。 在输出的末尾,如果我想在从字符串中删除整数后显示字符串的其余部分。 我可以使用什么功能 以下是一个输出示例: import re list=["22.11","23","66.7f","123abcde","Case44","Happy","78","66.7",

大家好,我目前正在做一个python正则表达式练习,以上是我目前的代码。 在输出的末尾,如果我想在从字符串中删除整数后显示字符串的其余部分。 我可以使用什么功能

以下是一个输出示例:

import re

list=["22.11","23","66.7f","123abcde","Case44","Happy","78","66.7","yes123","Book111"]

def removeInt(list):
    
for str in list:
            
    if re.match("\d+",str):
       
           result=re.search("\d+",str)
           print("Original sentence:", str)
           print("Found integer",result.group(0),"at the beginning of the string, starting index",result.start(),"and ending index at index",result.end(),".The rest of the string is:"**???????????**)
  

removeInt(list)

我想您可以使用.find()字符串方法

find()方法返回 子字符串(如果找到)。如果未找到,则返回-1

find()方法的语法为:

str.find(子、开始、结束)
其中:

  • sub-它是要在str字符串中搜索的子字符串
  • 开始和结束(可选)-范围str[start:end]在其中 搜索子字符串

我想您可以使用.find()字符串方法

find()方法返回 子字符串(如果找到)。如果未找到,则返回-1

find()方法的语法为:

str.find(子、开始、结束)
其中:

  • sub-它是要在str字符串中搜索的子字符串
  • 开始和结束(可选)-范围str[start:end]在其中 搜索子字符串

您可能会发现,使用组捕获数字及其前后的字符串部分更容易。注意:我假设您不想在第一组之后匹配其他数字:

重新导入
列表=[“22.11”、“23”、“66.7f”、“123abcde”、“Case44”、“Happy”、“78”、“66.7”、“yes123”、“Book111”]
def删除(列表):
对于列表中的str:
result=re.match(([^\d]*)(\d+)(.*),str)
如果结果不是无:
打印(“原始句子:”,str)
打印(“找到整数”,
结果:第(2)组,
“在字符串中,从索引开始”,
结果。开始(2),
“并以索引结尾”,
结果:完(二),
。字符串的其余部分是:“,result.group(1)+result.group(3))
移除(列表)
输出:

原文:22.11
在字符串中找到整数22,从索引0开始,到索引2结束。字符串的其余部分是:.11
原文:23
在字符串中找到整数23,从索引0开始,到索引2结束。字符串的其余部分是:
原文:66.7f
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7f
原文:123abcde
在字符串中找到整数123,从索引0开始,到索引3结束。字符串的其余部分是:abcde
原句:案例44
在字符串中找到整数44,从索引4开始,到索引6结束。字符串的其余部分是:Case
原句:78
在字符串中找到整数78,从索引0开始,到索引2结束。字符串的其余部分是:
原句:66.7
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7
原文:是123
在字符串中找到整数123,从索引3开始,到索引6结束。字符串的其余部分是:是
原文:第111册
在字符串中找到整数111,从索引4开始,到索引7结束。剩下的部分是:书

您可能会发现,使用组捕获数字及其前后的字符串部分会更容易。注意:我假设您不想在第一组之后匹配其他数字:

重新导入
列表=[“22.11”、“23”、“66.7f”、“123abcde”、“Case44”、“Happy”、“78”、“66.7”、“yes123”、“Book111”]
def删除(列表):
对于列表中的str:
result=re.match(([^\d]*)(\d+)(.*),str)
如果结果不是无:
打印(“原始句子:”,str)
打印(“找到整数”,
结果:第(2)组,
“在字符串中,从索引开始”,
结果。开始(2),
“并以索引结尾”,
结果:完(二),
。字符串的其余部分是:“,result.group(1)+result.group(3))
移除(列表)
输出:

原文:22.11
在字符串中找到整数22,从索引0开始,到索引2结束。字符串的其余部分是:.11
原文:23
在字符串中找到整数23,从索引0开始,到索引2结束。字符串的其余部分是:
原文:66.7f
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7f
原文:123abcde
在字符串中找到整数123,从索引0开始,到索引3结束。字符串的其余部分是:abcde
原句:案例44
在字符串中找到整数44,从索引4开始,到索引6结束。字符串的其余部分是:Case
原句:78
在字符串中找到整数78,从索引0开始,到索引2结束。字符串的其余部分是:
原句:66.7
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7
原文:是123
在字符串中找到整数123,从索引3开始,到索引6结束。字符串的其余部分是:是
原文:第111册
在字符串中找到整数111,从索引4开始,到索引7结束。剩下的部分是:书

只需重新使用
result.end()
打印(str[result.end():])
@Chris这只在数字位于字符串开头时有效?假设OP想要显示整个字符串减去数字,请使用
re.sub()
--
re.sub('\d+',''90years')
@PacketLoss因为OP使用
re.match
来过滤开头带有数字的字符串,我认为这不重要。@Chris在阅读了更多内容后,似乎是有意的,注意结果打印指定字符串的开始+1使用现有切片比此处的
re.sub()
更好。您对
22.11
的预期结果是什么?只需重新使用
result.end()
Original sentence: “90years” Found integer 90 at the beginning of this string, starting at index _ ending at index _. The rest of the string is: years.