2024-10-03 21:26:10 发布
网友
我有一个字符串,它由一组数字和一个URL组成。我只需要所有数字字符,除了附加到URL的字符。下面是我删除所有非数字字符的代码,但它不会从URL中删除数字
test = '4758 11b98https://www.website11/111' re.sub("[^0-9]","",test) expected result: 47581198
请检查以下表达式:
y=re.compile('([0-9]+)(?=.*http)') tokens = y.findall(test) print(''.join(tokens))
改变策略,只保留领先数字而忽略其余数字要容易得多:
import re test = '47581198https://www.website11/111' re.findall(r'^\d+', test)[0]
或者,如果不确定前导数字是否存在,则使用匹配:
m = re.match(r'\d+', test) if m: m = m.group()
输出:'47581198'
'47581198'
如果您确定“http://”字符串不能是您的初始数字
然后您需要两个过程,一个用于删除URL,另一个用于清除数字
test = '4758 11b98https://www.website11/1111' re.sub('\D', '', re.sub('https?://.*', '', test))
您可以匹配包含https://或http://的字符串,以不捕获附加到它的数字,并使用替代|来捕获组1中的其他数字
|
然后在输出中,用空字符串连接组1中的所有数字
https?://\S+|(\d+)
Regex demoPython demo
比如说
import re pattern = r"https?://\S+|(\d+)" s = "4758 11b98https://www.website11/111" print(''.join(re.findall(pattern, s)))
输出
47581198
请检查以下表达式:
改变策略,只保留领先数字而忽略其余数字要容易得多:
或者,如果不确定前导数字是否存在,则使用匹配:
输出:
问题更改后编辑'47581198'
如果您确定“http://”字符串不能是您的初始数字
然后您需要两个过程,一个用于删除URL,另一个用于清除数字
输出:
'47581198'
您可以匹配包含https://或http://的字符串,以不捕获附加到它的数字,并使用替代
|
来捕获组1中的其他数字然后在输出中,用空字符串连接组1中的所有数字
Regex demoPython demo
比如说
输出
相关问题 更多 >
编程相关推荐