首页 > 解决方案 > 我如何形成一个正则表达式,在某些情况下它以 * 开头,而在其他情况下不在 python 中

问题描述

早上好,我有一个关于正则表达式的问题,我正在形成的问题是我想要捕获的内容在某些情况下以 * 开头,而在其他情况下则不是,例如:

*B:P79COL01 #

 A:PED77MCY04 #

我用来捕获这个值的正则表达式如下:

pattern = re.compile (f '[/ *] [AB]: {equipo} #?')

其中equipo是一个变量

但是我不能得到我不以*开头的值(示例A:PED77MCY03#),我对正则表达式真的很陌生,我几乎看不懂

equipo='P79COL01'
patron=re.compile(f'[/*][AB]:{equipo}#?')

标签: python

解决方案


\*?[AB]:(.*?) #

可以工作。

\*转义 * 字符允许我们匹配它。

?匹配前面字符的 0 或 1 次出现,这似乎是您问题的核心问题。

(.*?)匹配:和之间的任何内容#。(注意 # 前面的空格,如上例所示)结果是它自己的捕获组。

{0,1} 和 ? 似乎是一样的,但为了便于阅读,与后者一起使用可能是有意义的,但这里有自由,而且似乎取决于个人选择——就像评论中列出了这两个选项一样。

绝对值得对文档进行一般性的查看,以了解任何调整和细微的变化。


推荐阅读