我正在尝试解析一个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]
希望强大的正则表达式用户提供一些帮助。任何人都可以接受挑战吗?
答案 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]+\])?)