使用正则表达式删除以数字开头的字符串中的第一个单词

时间:2018-06-28 04:12:48

标签: python regex python-3.x

我是使用正则表达式的新手。我有一个这样的字符串-3G Wireless我想删除所有从数字开始的单词,以便3G Wireless会变成Wireless

我想出了这个正则表达式来完成这项工作-

>>> re.sub("\S*\d\S*", "", "3g wireless")
' wireless'

在这种情况下失败-

>>> re.sub("\S*\d\S*", "", "RPG400")
''

我只想忽略以数字开头的单词。

3 个答案:

答案 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

This would show it in working!