Skip to main content
 首页 » 编程设计

Python正则表达式匹配变量模式

2025年05月04日30sharpest

我正在尝试编写一个匹配两种模式的 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+)

  • 第一组:* 之前的所有字符
  • 第二组:*之后的所有数字

Regex demo 1


更新

满足您对图案的要求

  • scratch_alpha
  • scratch_alpha1*12
    • 在*之后获取号码
    • *后面的数字是可选的

你可以试试下面的正则表达式:

scratch_alpha(?:(?:\d+)?\*(\d+)?)?

如果捕获组为空,则 * 后没有数字,您可以用 1 初始化变量。

Regex demo 2