这个问题可能很愚蠢,我是正则表达式的新手,我有点卡住了。
我有多个字符串,其中包含数字和单词。我想只匹配单词,如果它们不包含整数。
12 This Is A Test 9eifEf 12
由此,我想匹配This Is A Test
。
11 Stack 21deEh 12
由此,我想匹配Stack
。
使用RegExr,我想出了表达式.[a-z]
,它看起来像是有效的,但它一次最多匹配2个字母,而不是空格。
对不起代码请求。我不需要比模式更多的东西。我感谢任何帮助。
答案 0 :(得分:3)
只需使用:
\b[A-Za-z]+\b
下面:
\b
是一个单词边界,因此我们不匹配以数字开头的单词; [A-Za-z]
是一个包含所有大写和小写字母的字符组;和+
表示" 一个或多个"。如果你想返回字符串,你可以 - 正如@James所说 - 使用' '.join(..)
:
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> rgx=re.compile(r'\b[A-Za-z]+\b')
>>> text='12 This Is A Test 9eifEf 12'
>>> rgx.findall(text)
['This', 'Is', 'A', 'Test']
>>> ' '.join(rgx.findall(text))
'This Is A Test'
答案 1 :(得分:2)
无需使用正则表达式,使用str.isalpha
过滤掉分割后的单词中的数字:
s = "12 This Is A Test 9eifEf 12"
print(" ".join([x for x in s.split() if x.isalpha()]))
给出:
This Is A Test
但是,这不会保留多个空格。要做到这一点,只需:
print(" ".join([x for x in s.split(" ") if not x or x.isalpha()]))