如何用python理解正则表达式?

时间:2014-09-29 22:00:10

标签: python regex string escaping

我是python的新手。在给出像这样的字符串列表的情况下,有人可以帮助我如何创建正则表达式:

  test_string =  "pero pero CC 
    tan tan RG
    antigua antiguo AQ0FS0
    que que CS 
    según según SPS00 
    mi mi DP1CSS 
    madre madre NCFS000"

如何返回这样的元组:

> ([madre, NCFS00],[antigua, AQ0FS0]) 

我想用test_string返回带有相关标签的单词,这就是我所做的:

# -- coding: utf-8 --
import re


#str = "pero pero CC " \
   "tan tan RG " \
   "antigua antiguo AQ0FS0" \
    "que que CS " \
    "según según SPS00 " \
    "mi mi DP1CSS " \
    "madre madre NCFS000"

tupla1 = re.findall(r'(\w+)\s\w+\s(AQ0FS0)', str)
print tupla1

tupla2 = re.findall(r'(\w+)\s\w+\s(NCFS00)',str)
print tupla2

输出如下:

  

[('antigua','AQ0FS0')] [('madre','NCFS00')]

这个输出的问题是,如果我沿着test_string传递它,我需要保留标签的“顺序”或“出现”(即我只能打印一个元组,当且仅当它们有以下顺序:AQ0FS0和NCFS000换句话说:女性形容词,女性名词)。

1 个答案:

答案 0 :(得分:1)

^([a-zA-Z]+)\s+[a-zA-Z]+\s+([\w]+(?=\d$)\d)

不知道这个选择的基础,但你仍然可以得到它。只需抓住捕获。不要忘记设置标志gm。见演示。

http://regex101.com/r/nA6hN9/38