2024-10-04 11:29:25 发布
网友
import re s = 'Sarah Ruthers#6' output = re.sub("[^\\w]", "", s) print output
上面删除了所有的alpha字符;我只想删除最后一个alpha字符(字母类型字符)后面的任何字符;例如,删除最后一个alpha字符后面的任何字符。你知道吗
也就是说
要简单输出:
Sarah Ruthers
上面的My regex;输出SarahRuthers(删除空格)
SarahRuthers
output = re.sub("[^a-zA-Z]+$", "", s)
\w是“单词字符”,包括字母数字(字母、数字)加下划线(389;)。你知道吗
\w
假设您只需要在末尾保留大小写字母:
output = re.sub("[^A-Za-z ]+$", "", s)
在末尾锚定模式,并使用正确的字符类:
output = re.sub(r"[\W\d_]+$", "", s)
这将删除字符串末尾所有非字母字符的一次运行;$锚点限制范围,[\W\d_]正确匹配非字母,而不仅仅是非单词字符(单词字符包括数字和下划线字符)。你知道吗
$
[\W\d_]
我还将regex设置为原始字符串(对于regex模式,您应该始终这样做),这样就不需要使用双反斜杠。你知道吗
请注意,虽然[^a-zA-Z]可以替换[\W\d_],但我强烈建议[\W\d_]而不是[^a-zA-Z],因为前者是Unicode友好的,而后者则不是;例如,如果您的文本是'résumé',则使用[^a-zA-Z]会去掉后面的é,[\W\d_]不会
[^a-zA-Z]
'résumé'
é
\w
是“单词字符”,包括字母数字(字母、数字)加下划线(389;)。你知道吗假设您只需要在末尾保留大小写字母:
在末尾锚定模式,并使用正确的字符类:
这将删除字符串末尾所有非字母字符的一次运行;
$
锚点限制范围,[\W\d_]
正确匹配非字母,而不仅仅是非单词字符(单词字符包括数字和下划线字符)。你知道吗我还将regex设置为原始字符串(对于regex模式,您应该始终这样做),这样就不需要使用双反斜杠。你知道吗
请注意,虽然
[^a-zA-Z]
可以替换[\W\d_]
,但我强烈建议[\W\d_]
而不是[^a-zA-Z]
,因为前者是Unicode友好的,而后者则不是;例如,如果您的文本是'résumé'
,则使用[^a-zA-Z]
会去掉后面的é
,[\W\d_]
不会相关问题 更多 >
编程相关推荐