如何删除字符串中最后一个数字后的所有内容

时间:2016-09-22 11:37:21

标签: python regex

我有这样的字符串:

w = 'w123 o456 t789-- --'

我的目标是删除最后一个数字后的所有内容,因此我想要的输出是

w123 o456 t789

结尾并不总是相同,所以-- --只是一个例子。

import re

re.sub('(.*?)(\d)', '', w)

给了我

'-- --'

如何修改命令以删除此部分?

3 个答案:

答案 0 :(得分:7)

您可以使用:

$.ajax({
    type: 'GET',
    url: url,
    dataType: 'json',
    success: function (response) {
         getData[name] = response;
         alert(getData[name]);
    }
});

>>> w = 'w123 o456 t789-- --' >>> re.sub(r'\D+$', '', w) 'w123 o456 t789' 会在结束锚\D+$之前移除一个或多个非数字字符。

答案 1 :(得分:1)

关键是你的表达式包含 lazy 点匹配模式,它匹配并包括前一个或多个数字。

您需要使用贪婪点匹配模式匹配 last 数字,并将该部分捕获到捕获组中。然后,在替换模式中使用r'\1'反向引用来恢复结果中的值。

这适用于1行字符串:

re.sub(r'(.*\d).*', r'\1', w)

或使用锚点以及带有换行符的支持字符串:

re.sub(r'^(.*\d).*$', r'\1', w, flags=re.S)

Python demo:

import re
w = 'w123 o456 t789-- --'
print(re.sub(r'^(.*\d).*$', r'\1', w, flags=re.S))
# => w123 o456 t789

答案 2 :(得分:-2)

st = 'w123 o456 t789-- --'
print st.rstrip()
"w123 o456 t789'