我有这样的字符串:
w = 'w123 o456 t789-- --'
我的目标是删除最后一个数字后的所有内容,因此我想要的输出是
w123 o456 t789
结尾并不总是相同,所以-- --
只是一个例子。
import re
re.sub('(.*?)(\d)', '', w)
给了我
'-- --'
如何修改命令以删除此部分?
答案 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)
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'