python - 如何强制Python忽略re.findall()语句中的re.DOTALL?

标签 python regex flags

我一直在用头撞键盘,通过 Google 和我能找到的所有 Python 文档来寻求启发,但找不到我遇到的问题的答案。

我在网站上运行了以下正则表达式,但 Python 坚持在其上设置 re.DOTALL,即使我的代码没有告诉它:

\d+. +(?P<season>\d+) *\- *(?P<episode>\d+).*?(?P<day>\d+)(?:\/|\s)+(?P<month>[A-Za-z]+)(?:\/|\s)+(?P<year>\d+) +(?:<a .+><img .+></a>)? ?<a .*?>(?P<name>.*?)</a>

这会为电视节目列表创建一系列季节/剧集,除了在 epguides.com/BurnNotice(使用 TVRage 列表时)之外,由于换行符之前有一些空格(我猜测)。

使用http://re-try.appspot.com为了进行测试,我将问题范围缩小到了 re.DOTALL 的使用。如果我在重试时启用它,它会复制我在脚本上独立运行它时得到的结果。如果我取消勾选 DOTALL,那么它就会给出我期望的结果。

如何强制 Python 不使用 re.DOTALL?

该脚本可以在 Ubuntu 和 OS X 上运行。

最佳答案

.+> 应更改为 [^>]+>

.*?>[^>]*>

您也可以尝试将其他点替换为[^\r\n],但以上2个更改应该足够了。

关于python - 如何强制Python忽略re.findall()语句中的re.DOTALL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003461/

相关文章:

python - 使用列表理解根据使用其他列表的条件替换重复项

python - 如何在 python 中截断浮点不精确

Javascript unescape() 与 Python urllib.unquote()

mysql - 如何: Select from MYSQL text field type only the numbers that start with 89 using REGEXP?

javascript - .NET 的 JavaScript 中的 Match.Result

regex - Notepad++ 正则表达式查找并替换 : Match-but-dont-include operator ? <= 不起作用。为什么?

html - CSS 正则表达式标志 : ignore case, 全局搜索

c - 使用带有逻辑运算符的标志而不是条件语句(例如 if())

python - 将 3 列数据帧转换为矩阵,其中列由范围定义

c++ - 在 C++ 中表示位标志的枚举中的 ALL 标志的紧凑非重复方式