早上好,我有一个关于我正在形成的正则表达式的问题,问题是我想要捕获的内容在某些情况下以 * 开头,而在其他情况下则不是,例如:
*B:P79COL01 #
A:PED77MCY04 #
我用来捕获该值的正则表达式如下:
pattern = re.compile(f'[/*][AB]:{equipo}#?')
其中equipo是一个变量
但是我无法获取不以 * 开头的值(示例 A: PED77MCY03 #),我对正则表达式确实很陌生,我很难理解它
equipo='P79COL01'
patron=re.compile(f'[/*][AB]:{equipo}#?')
最佳答案
\*?[AB]:(.*?) #
可以工作。
\*
转义 * 字符,以便我们能够匹配它。
?
匹配前面字符的 0 或 1 次出现,这似乎是您问题的核心问题。
(.*?)
匹配 :
和 #
之间的任何内容。 (请注意 # 之前的空格,如上面的示例所示)
结果是它自己的捕获组。
{0,1} and ? seem to be the same但出于可读性考虑,选择后者可能是有意义的,但这里有自由,这似乎取决于个人选择 - 正如评论中列出的两个选项一样。
绝对值得总体浏览一下the documentation进行任何调整和细微更改。
关于python - 我怎样才能形成一个正则表达式,其中在某些情况下以 * 开头,而在其他情况下则不在 python 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57559249/