我的代码是
import regex
word = '\x02|1280|SELECT|35;36|="214554"'.encode('ascii')
pattern = r'^(\x02)\|(\d{1,4})\|(SELECT|UPDATE|INSERT)\|(\d{1,2}+|;*)\|="(\w+)"'.encode('ascii')
print(regex.match(pattern, word).group(4))
我对第4组感兴趣 - > (\ d {1,2} + |; *)可以有以下模式
我尝试过不同的组合,但由于我是regex的新手,所以没有人会从群组中返回数据。
答案 0 :(得分:1)
如何将第4组的模式更改为:(\d{1,2}(?:;\d{1,2})*)
?
\d{1,2}
代表一位或两位数字(?:;\d{1,2})*
表示零个或多个非捕获组,其中包含分号;
后跟一个或两个数字(?:
来将群组标记为非捕获希望这有帮助!
答案 1 :(得分:0)
\d{1,2}+|;*
模式匹配1或2位占有或0+分号。所以,这不是你需要的。
你需要写这样的模式:
r'^(\x02)\|(\d{1,4})\|(SELECT|UPDATE|INSERT)\|(\d{1,2}(?:;\d{1,2})*)\|="(\w+)"'
请参阅Python demo。
第4组模式看起来像(\d{1,2}(?:;\d{1,2})*)
:
\d{1,2}
- 1或2位数字(?:
- 开始匹配序列的非捕获组....
;
- 分号\d{1,2}
- 1或2位数字)*
- ....零次或多次出现。