Python正则表达式匹配字符串选项

gke*_*nel 2 python regex

我是Python和Python RE的新手.

我正在尝试为ARM汇编代码创建一个解析器.我想为匹配条件分支指令制作正则表达式,它可以是:

beq, bne, blt, bgt
Run Code Online (Sandbox Code Playgroud)

我尝试了表单的正则表达式

'b[eq|ne|lt|gt]'
Run Code Online (Sandbox Code Playgroud)

但这不匹配.有人可以帮我这个吗?

Jer*_*rry 5

您应该使用括号作为选项,而不是方括号:

b(eq|ne|lt|gt)
Run Code Online (Sandbox Code Playgroud)

而且你通常想要一个非捕获组:

b(?:eq|ne|lt|gt)
Run Code Online (Sandbox Code Playgroud)

而且你也可以让它更优化:

b(?:eq|ne|[lg]t)
Run Code Online (Sandbox Code Playgroud)

方括号将被理解为任何字符或字符范围.所以[eq|ne|lt|gt]实际上意味着任一个e,q,|,n,e(再次,所以它成为多余的),等等.