尝试用正则表达式捕获特定模式(Python 3.4)

尝试用正则表达式捕获特定模式(Python 3.4),python,regex,python-3.x,Python,Regex,Python 3.x,我试图捕捉的模式大致如下: Coin: gp (3840) “gp”可以替换为“cp”、“sp”或“pp”,括号内可以有任何数字串。我想到的模式是: "Coin: 'cp|sp|gp|pp' \(\d+\)" 但是,这是我尝试匹配时的结果: >>> print(re.match("Coin: 'cp|sp|gp|pp' \(\d+\)", "Coin: gp (3840)")) None 我在模式的哪一部分出错了 您的模式匹配不同的选项错误:'cp | sp | gp |

我试图捕捉的模式大致如下:

Coin: gp (3840)
“gp”可以替换为“cp”、“sp”或“pp”,括号内可以有任何数字串。我想到的模式是:

"Coin: 'cp|sp|gp|pp' \(\d+\)"
但是,这是我尝试匹配时的结果:

>>> print(re.match("Coin: 'cp|sp|gp|pp' \(\d+\)", "Coin: gp (3840)"))
None

我在模式的哪一部分出错了

您的模式匹配不同的选项错误:
'cp | sp | gp | pp'
它试图匹配文本字符
'

你的正则表达式应该是这样的:

>>> re.match("Coin: (?:cp|sp|gp|pp) \(\d+\)", "Coin: gp (3840)")

表达式
(?:cp | sp | gp | pp)
创建了一个选项的非捕获组。

您的模式匹配不同的选项错误:
'cp | sp | gp | pp'
它正在尝试匹配文本字符

你的正则表达式应该是这样的:

>>> re.match("Coin: (?:cp|sp|gp|pp) \(\d+\)", "Coin: gp (3840)")
表达式
(?:cp | sp | gp | pp)
创建了一个非捕获选项组