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

PHP preg_match(.*)不匹配过去的换行符[重复]

靳越
2023-03-14

我将这些数据放在一个LONGTEXT列中(因此换行符被保留):

Paragraph one
Paragraph two
Paragraph three
Paragraph four

我正在尝试匹配第1到3段。我正在使用以下代码:

preg_match('/Para(.*)three/', $row['file'], $m);

这不会返回任何结果。如果我试图在段落的第一行内进行匹配:

preg_match('/Para(.*)one/', $row['file'], $m);

然后代码工作,我得到正确的字符串返回。我在这里做错了什么?

共有3个答案

姬选
2023-03-14

尝试将正则表达式设置为全点(PCRE_DOTALL),以便它包含换行符(结尾处的额外“s”参数):

preg_match('/Para(.*)three/s', $row['file'], $m);
高祺
2023-03-14

添加多行修改器。

例如:

preg_match('/Para(.*)three/m', $row['file'], $m)
汪博达
2023-03-14

使用s修饰符。

preg_match('/Para(.*)three/s', $row['file'], $m);

模式修改器

 类似资料:
  • 问题内容: 我在LONGTEXT列中有此数据(因此保留了换行符): 我正在尝试将第1段到第3段匹配。我正在使用以下代码: 这什么也不会返回。如果我尝试通过匹配以下内容在段落的第一行中工作: 然后代码工作,我得到正确的字符串返回。我在这里做错了什么? 问题答案: 使用修饰符。 http://php.net/manual/zh/reference.pcre.pattern.modifiers.php

  • 好的,所以我有一个正则表达式,我试图用它来匹配一些html文件中的特定模式。下面是preg_match语句: 明确地说,这是试图匹配一个id为{ { ALViewElement _ }的html元素。*}}但它也需要以结束标记结束,例如,如果$htmlElementType是“section ”,它将以“/section”结束 如果我的html看起来像这样,里面没有其他内容,那么它就如预期的那样工

  • 问题内容: true)。但是,我编写了一个简单的程序,其结果表明,任何字符都根本与换行符不匹配。该程序可以在这里找到:http : //play.golang.org/p/pccP52RvKS。我真的很困惑。 任何帮助将不胜感激,并在此先感谢。 问题答案: 像大多数其他(所有?)正则表达式引擎一样,点不匹配换行符,除非您在正则表达式中添加“全部点”标志。 我使用您的链接对此进行了测试,并且可以正常

  • 我尝试了这种模式,但发现第一个匹配的句子带有符号

  • 问题内容: 例如我有字符串: 结果,我希望具有以下匹配项: 我知道我可以这样写: 但是我认为我很丑,正在寻找更好的解决方案。我在寻找正则表达式解决方案,而不是自写的有限状态机。 问题答案: 您可以将其与:

  • 问题内容: 如何替换字符串中所有出现的内容? 如果要替换字符串中的所有换行符(\ n)。 这只会替换第一次出现的换行符 我不知道该怎么做? 问题答案: 使用全局标志。