查找字符串中的第一个到最后一个字母

时间:2016-09-24 07:27:05

标签: regex python-2.7

我是Python的新手,在阅读正则表达式文档时非常困惑。根据我的理解,re.search搜索字符串中的任何位置,而re.match仅搜索字符串的开头。但是什么时候我必须使用re.compile

我尝试使用正则表达式,但无法让它工作。如果有一个与字母,标点符号,数字和空格混合的字符串,我如何用字母表获取字符串的一部分?

import re
a = "123,12    jlkjL kSljdf   12.2"
test = re.search('^[a-zA-Z]', a)
print test 

我想要的输出是jlkjL kSljdf

1 个答案:

答案 0 :(得分:1)

在使用正则表达式操作之前,您可以使用re.compile编译正则表达式对象。

有两个选项可以满足您的需求:将字母与空格匹配,然后剥离多余的空格或从开始/结束中删除所有非字母符号:

import re
a = "123,12    jlkjL kSljdf   12.2"
rg = re.compile(r'[a-zA-Z ]+')
mtch = rg.search(a)
if mtch:
    print (mtch.group().strip()) # => jlkjL kSljdf

# Stripping non-letters from the start/end
rx = re.compile(r'^[^a-zA-Z]+|[^a-zA-Z]+$')
print(rx.sub('', a)) # => jlkjL kSljdf

请参阅Python demo

在第一种方法中,在字符类中包含一个空格,并在其上设置+(1次或更多次出现)量词。

在第二种方法中,^[^a-zA-Z]+匹配字符串开头(+)以外的字母([^a-zA-Z])以外的1个或多个(^)个字符(或|)字符串末尾的字母以外的一个或多个字符($)。