我是使用正则表达式的新手。我有一个这样的字符串-3G Wireless
我想删除所有从数字开始的单词,以便3G Wireless
会变成Wireless
。
我想出了这个正则表达式来完成这项工作-
>>> re.sub("\S*\d\S*", "", "3g wireless")
' wireless'
在这种情况下失败-
>>> re.sub("\S*\d\S*", "", "RPG400")
''
我只想忽略以数字开头的单词。
答案 0 :(得分:4)
\s*
在开头的实际数字之前考虑任何空格。 \b
检查第一个单词。
此外,以后可以使用strip()删除剩余字符串开头和结尾的所有不必要的空格。
re.sub(r'\s*\b(\d+\w*)', '', "3g wireless").strip()
# 'wireless'
re.sub(r'\s*\b(\d+\w*)', '', "RPG400").strip()
# 'RPG400'
答案 1 :(得分:0)
使用:
import re
s ='3g wireless'
print(re.sub(r'\b(\d+\w*)', '', s))
# wireless
\b
匹配单词边界。
\d+
匹配一个或多个数字。
\w*
匹配零个或多个字母或数字。
。
答案 2 :(得分:0)
您需要做的是^\b(\d.*?)\b
,
其中\b(\d.*?)\b
创建一个以数字开头的单词边界,并限制在其边界内,^
将其指定为开头。
import re
text = '3G Wireless'
re.sub(r'^\b(\d.*?)\b','',text).strip()
# Wireless