我有一堆由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等结尾。任何帮助将不胜感激!
答案 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]