正则表达式匹配,直到第一个数字出现在python中的字符串中

时间:2014-07-07 06:03:16

标签: python regex

given text = "ABC123XYZ"

如何使用ABC从python中的文本中提取regex

指导我实现目标的正确方法。

3 个答案:

答案 0 :(得分:1)

>>> import re
>>> re.search(r"[a-zA-Z]*", "ABC123XYZ").group()
'ABC'

或者使用re.IGNORECASE - 标志来获得更清晰的定义。

>>> re.search(r"[a-z]*", a, re.IGNORECASE).group()
'ABC'

答案 1 :(得分:1)

您可以使用正则表达式,或takewhile

>>> import re
>>> exp = r'(.*?)\d+.*?$'
>>> re.findall(exp, 'dafadfader343dvdfdfd3343fdfd')
['dafadfader']

根据您对文本的了解,这是另一种解决方案:

>>> from itertools import takewhile
>>> ''.join(takewhile(lambda x: not x.isdigit(), 'adfdafdaf343afdadffad'))
'adfdafdaf'

答案 2 :(得分:0)

您可以使用正则表达式以多种方式获取字母ABC。

>>> import re
>>> str = "ABC123XYZ"

使用否定(非字符类),

>>> re.search(r'^[^\d]*', str)
>>> m.group()
'ABC'

使用前瞻

>>> m = re.search(r'^.*(?=123)', str)
>>> m.group()
'ABC'

>>> m = re.search(r'^.*(?=\d{3})', str)
>>> m.group()
'ABC'

使用lookbehind,

>>> m = re.search(r'(?<=^)[A-Z]*', str)
>>> m.group()
'ABC'

使用Character class

>>> m = re.search(r'^[A-Z]*', str)
>>> m.group()
'ABC'