我正在努力寻找一种模式。我写了下面的代码:
sensed_ch_state = t_status;
mac->PLME_CCA_confirm(sensed_ch_state);
上面的代码返回('000,001,1','','','1'),因为它错过了与群组的匹配('','0','','1,100,001')
如果连续线上'00'之前和之后的角色相同,我正在尝试锻炼。我写的代码匹配'000,001,1 00 , 00 1'。如何匹配' 00 0, 00 1,100,001'。
如何获取后来的匹配组?
答案 0 :(得分:0)
评论:对于字符串&#;; 2295051,2238451,2235301,1950522,2238451,3530333'
...您看到这些组在发生之前具有相同的位数,即2位数字,并且在它们出现之后是1位数
string = '2295051,2238451,2235301,1950522,2238451,3530333'
_Step 1_
pattern = '(\d+)'
Output: ('2295051',) ('2238451',) ('2235301',) ('1950522',) ('2238451',) ('3530333',)
_Step 2_
pattern = '((\d\d)\d+)'
Output: ('2295051', '22') ('2238451', '22') ('2235301', '22')
('1950522', '19') ('2238451', '22') ('3530333', '35')
_Step 3_
pattern = '((\d\d)\d+(\d))'
Output: ('2295051', '22', '1') ('2238451', '22', '1') ('2235301', '22', '1')
('1950522', '19', '2') ('2238451', '22', '1') ('3530333', '35', '3')
在文档re.html#module-re中了解'+'
的含义。
评论:...我不明白它是如何做到的以及如何利用它...
pattern = '((\d\d)\d+(\d))'
搜索子字符串,从2位数\d\d
开始,后跟任意数量的数字,最后一位,一位数字\d
。此模式是通用的,匹配任何子字符串,至少与len = 4的数字匹配。
尝试这种模式:
string = '000,001,100,001'
pattern = '((\d)00|00(\d))'
for m in re.finditer(pattern, string):
print(m.groups())
<强>输出强>:
(&#39; 000&#39;,&#39; 0&#39;,无)
(&#39; 001&#39;,无,&#39; 1&#39;)
(&#39; 100&#39;,&#39; 1&#39;,无)
(&#39; 001&#39;,无,&#39; 1&#39;)
第一项000
同时包含 之前的和之后的。
使用Python测试:3.4.2 - re:2.2.1
如果这对您有用,请回来并将您的问题标记为已回答,或者为什么不对其进行评论。