我正在尝试编写一个匹配两种模式的 python 正则表达式: 第一个是 scratch_alpha 第二个是 scratch_alpha1*12(其中 12 可以是任何十进制数) 我想将 * 之后的值放在一个变量中,如果在 * 之后检测到 scratch_alpha,只需在变量中写入 1
我写了这个正则表达式: ([a-zA-Z0-9\_*]+)(\*\d+)?
我希望后面有两组,第一个是名称“scratch_alpha”,第二个是 * 之后的数字或 None(如果没有,我初始化变量到 1).
但是对于我的正则表达式,似乎第一组包含所有内容 (scratch_alpha*12) 而不是第一组中的 scratch_alpha 和第二组中的值。
请您参考如下方法:
试试这个正则表达式:([^*]+)\*(\d+)
- 第一组:
*之前的所有字符 - 第二组:
*之后的所有数字
更新
满足您对图案的要求
scratch_alphascratch_alpha1*12- 在
*之后获取号码 *后面的数字是可选的
- 在
你可以试试下面的正则表达式:
scratch_alpha(?:(?:\d+)?\*(\d+)?)?
如果捕获组为空,则 * 后没有数字,您可以用 1 初始化变量。
