正则表达式不捕获数字和字符串

时间:2017-08-10 14:48:46

标签: python python-2.7 python-3.x pandas

大家好,所以我试图捕获以数字开头的任何内容,但由于某种原因,正则表达式没有捕获我表中的条目:

df
   a
0 Shamrock1-A
1 Shamrock2-B
2
3 Q217
4 1YR
5 2YR

我试图用以下正则表达式捕获Q217,1YR和2YR:

(Q|^\d)

但是我的正则表达式只是捕获Q217。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

df = pd.DataFrame({'a': ['Shamrock1-A', 'Shamrock2-B', 'Q217', '1YR', '2YR']})
             a
0  Shamrock1-A
1  Shamrock2-B
2         Q217
3          1YR
4          2YR

df.a.str.extract('(^(Q|\d).*)')[0]

0     NaN
1     NaN
2    Q217
3     1YR
4     2YR

答案 1 :(得分:0)

这将抓住你的所有例子,并且更多地假设大写字母。如果需要,可以很容易地添加小写。

import re

text = '''
df
   a
0 Shamrock1-A
1 Shamrock2-B
2
3 Q217
4 1YR
5 2YR
'''

print( re.findall( '[A-Z]+[0-9]+|[0-9]+[A-Z]+', text ) )

答案 2 :(得分:0)

你的正则表达式工作正常,但你必须使用str.match

df[df['a'].str.match(r'Q|^\d')==True] # == True because of presence nan values

输出:

      a
3  Q217
4   1YR
5   2YR