当前位置: 首页 > 知识库问答 >
问题:

如果包含换行符,正则表达式将失败[重复]

昌正奇
2023-03-14

我试图从用#字符分隔的字符串中提取一个简单的句子。

str = "#text text text \n text#"

有了这个模式

pattern = '#(.+)#'

现在,有趣的是,当字符串包含换行符时,正则表达式不匹配

out = re.findall(pattern, str) # out contains empty []

但是如果我从字符串中删除\n,它可以正常工作。知道如何解决这个问题吗?

共有3个答案

公冶峰
2023-03-14

试试这个正则表达式“#([^#] )#”

它将匹配分隔符之间的所有内容。

山煜祺
2023-03-14

使用 re。DOTALL 如果你想要你的 . 也匹配换行符:-

>>> out = re.findall('#(.+)#', my_str, re.DOTALL)
>>> out
['text text text \n text']

此外,使用内置名称作为变量名也不是一个好主意。使用my_str而不是str

糜凯泽
2023-03-14

还要通过< code>re。DOTALL标志,它使< code >。真正匹配一切。

做“.”特殊字符匹配任何字符,包括换行符;没有这个标志,'.'将匹配除换行符之外的任何内容。

 类似资料:
  • 问题内容: 如果我的班级名称经常不同,请说: 通常我可以这样做: 这里有太多的类名称无法使用,因此一类都已淘汰。 我知道Python没有我通常会使用的“ .contains”,但确实有一个“ in”。尽管我还没有找到一种方法来整合它。 我希望有一种使用正则表达式的方法。尽管我的Python语法确实让我失望,但我一直在尝试以下方面的变体: 但这似乎并不能解决问题。 问题答案: BeautifulSo

  • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达

  • 我将一个regex模式列表传递给< code>grep来检查syslog文件。它们通常匹配IP地址和日志条目; 这只是一个模式列表,例如我正在循环传递的“1\.2\.部分,因此我无法传递“-v”。 我很困惑试图做上述的逆,不匹配线与某个IP地址和错误!1.2.3.4.*已爆炸”将匹配除1.2.3.4告诉我它已爆炸之外的任何syslog行。我必须能够包括一个IP地址不匹配。 在Stack Overf

  • 问题内容: 我有一个这样的正则表达式: 如果单词包含 bar , baz 或 bad ,则函数必须返回True 。简而言之,我需要python的regexp模拟 我怎么知道呢?谢谢! 问题答案:

  • 问题内容: 我目前正在将Web应用程序代码从PHP移植到JS。 我对此正则表达式有疑问。从PHP 这样使用 如何将其转换为在JS上工作? 先感谢您 问题答案: 没什么特别的。PHP regex语法与JavaScript中的语法非常相似: 您可以从 MDN的 本手册中找到有关JavaScript 中正 则表达式的更多信息:https : //developer.mozilla.org/en- US/

  • 问题内容: 我有此RequestMapping: 我想添加该RequestMapping: 因此,它可以服务于所有“无出发”路线。但是,这会产生冲突,因为“ / route / to-destination-from-departure” URL实际上也与第二个RequestMapping匹配…很公平,所以我的解决方案是指定一个正则表达式: 因此,如果“目标”包含“ -from-”,则Reques