python - 我怎样才能形成一个正则表达式,其中在某些情况下以 * 开头,而在其他情况下则不在 python 中

标签 python

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

*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/

相关文章:

python - 如何从常用缩写(PST、EST 等)获取 pytz 时区?

python - 为什么 PyGtk 中的 set_model 方法将第一列的值复制到第三列?

python - 使用另一个 DataFrame 中找到的值创建一个新列

python - Pandas ffill/bfill 用于特定数量的观察

python - numpy 从索引列表创建 3D 数组

python - Sqlalchemy 多对多关系 : delete the child only if there are no more references?

python - 在 python 2 和 3 中使用 input/raw_input

python - 对 PySpark Dataframe 中的连续行进行分组

python - pycurl登录joomla网站

python - 在 Python 中从 2 个数据帧列创建二进制矩阵