Python正则表达式帮助 - 方括号和可选参数

时间:2014-05-08 05:19:31

标签: python regex

我正在尝试解析一个python命令行参数,以发送到与某些固件通信的主机应用程序,该命令包含方括号和可选参数。

我使用以下语法定义了低级I2C命令(为show添加了引号):

i2c##[w##...][r#],其中

i2c##      is the i2c slave address, with ## as two hex digits.
[w##...]   is the write data, with at least two hex digits ##...
[r#]       is the read data, with # being a decimal number

我接近以下正则表达式:

i2c[A-Fa-f0-9]{2}[[]w[A-Fa-f0-9]{2,}[]]([[]r[0-9]+[]])

能够通过更大的案例:

i2cBF[wDEADBEEF][r16]

但不是没有读取选项的那个,即:

i2cBF[wDEADBEEF]

希望强大的正则表达式用户提供一些帮助。任何人都可以接受挑战吗?

1 个答案:

答案 0 :(得分:0)

使最后一组可选,是的还有一件事,如果你想做一个文字匹配,可以通过转出方括号来做到这一点:

更正了你的正则表达式而没有逃避

i2c[A-Fa-f0-9]{2}[[]w[A-Fa-f0-9]{2,}(?:[]]([[]r[0-9]+[]])?)

通过转义纠正正则表达式:

i2c[A-Fa-f0-9]{2}\[w[A-Fa-f0-9]{2,}\](?:(\[r[0-9]+\])?)