Python re.search Patterns

时间:2016-04-19 23:25:26

标签: python regex python-3.x

我有一堆由Q,D或T组成的字符串。下面是一些例子。

              aa= "QDDDDQDTDQTD"
              bb = "QDT"
              cc = "TDQDQQDTQDQ"

我是re.search的新手,对于每个字符串,是否可以获得任何长度以Q开头的所有模式,并以D或Q结尾,并且在第一个Q和最后一个Q之间没有T D或Q.

所以对于aa,它会找到“QDDDDQD”

对于bb,它会找到“QD”

对于cc,它会找到“QDQQD”和“QDQ”

我理解使用re.search的基本形式,如:

              re.search(pattern, my_string, flags=0)

如何设置上述模式有困难,比如如何找到以Q开头的模式,或以Q等结尾。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:4)

您运作的模式是Q[DQ]+。那就是:以" Q"开头,然后是几个" D"或" Q"。

但是,如果你想找到 所有匹配,你需要re.findall(),而不是re.search()

In [9]: re.findall('Q[DQ]+', aa)
Out[9]: ['QDDDDQD']

In [10]: re.findall('Q[DQ]+', bb)
Out[10]: ['QD']

In [11]: re.findall('Q[DQ]+', cc)
Out[11]: ['QDQQD', 'QDQ']

In [12]: 

答案 1 :(得分:1)

使用符合您所描述内容的模式:以$pdf = new PDF(); $pdf->SetAutoPageBreak(true,10); 开头,然后使用Q开始除T以外的任何模式,然后使用[^T]*开启D或Q:

[DQ]