python - 点匹配而不是 ? Python 正则表达式中的组

标签 python regex

我正在尝试编写一个正则表达式来匹配特定类型的类似 HTML 的括号标记。如果标签也在 HTML 注释中,则此表达式应该与标签匹配,并且组 1 与标签之间的内容匹配。

为了澄清,表达式应该匹配两者

[section]Blah blah blah[/section]

<!-- [section] -->Blah blah blah<!-- [/section] -->

这是我到目前为止所拥有的:

"(?:<!--\s*)?\[section](?:\s*-->)?(.*)(?:<!--\s*)?\[/section](?:\s*-->)?"

问题在于组 1(即 (.*) )包含以下评论的潜在开始(即 <!--\s* )。删除?从第二个之后(?:<!--\s*)获取组 1 以将其排除,但如果没有 HTML 注释语法,表达式将无法匹配标记。

如何让组 1 排除第二个评论开头(如果存在),同时仍然保持那里不会有评论开头的可能性?

最佳答案

.* 之后添加 ? 会使其变得“惰性”,因此它不会匹配任何额外的结束标记。

(?:<!--\s*)?\[section](?:\s*-->)?(.*?)(?:<!--\s*)?\[/section](?:\s*-->)?

关于python - 点匹配而不是 ? Python 正则表达式中的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967616/

相关文章:

python - 如何在 FastAPI 中为 Pydantic 模型编写测试?

欧洲日期的正则表达式/正则表达式 ("j. F Y")

python - 在 Python 中使用正则表达式更改文件中的部分字符串

python - Mac OS X 10.10 合并错误

python - Python中检查Kafka主题是否存在

python - 有没有一种方法可以在不导入的情况下计算时间?

python - 如何在python中的特定文本之前或之后找到最近的数字

regex - 允许在正则表达式中嵌套连续匹配

regex - 使用 RegExp 在单个正斜杠上分割字符串

python计数数据框列值满足条件