我是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
。
答案 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个或多个(^
)个字符(或|
)字符串末尾的字母以外的一个或多个字符($
)。