Regex 正则表达式新行不正确

Regex 正则表达式新行不正确,regex,Regex,我想在href属性中匹配包含“goto”的所有锚定标记的模式。我使用的是php。我想匹配以下链接: <a href='http://www.mysite.com/goto/profile'>links </a> 我写了一个正则表达式,比如: <a.*(href).*(goto).*<\/a> 因为新的生产线,它不匹配。我需要一个正则表达式来匹配有新行和没有新行的链接。使用您正在查找“dot all”修饰符/s 从: /s(PCRE\u DO

我想在href属性中匹配包含“goto”的所有锚定标记的模式。我使用的是php。我想匹配以下链接:

<a  href='http://www.mysite.com/goto/profile'>links </a>

我写了一个正则表达式,比如:

<a.*(href).*(goto).*<\/a>

因为新的生产线,它不匹配。我需要一个正则表达式来匹配有新行和没有新行的链接。

使用
您正在查找“dot all”修饰符
/s

从:

/s(PCRE\u DOTALL)
如果设置了此修改器,则图案中的点元字符将匹配所有字符,包括换行符。没有它,新行被排除在外。此修饰符相当于Perl的/s修饰符。像[^A]这样的负数类始终与换行符匹配,与此修饰符的设置无关

因此,
/.*/
将为每行创建新的匹配项,而
/.*/s
将匹配所有行

您可以使用正则表达式:

<a.*(href).*(goto).*([\n]*.*)*<\/a> 

如您所述,如果您只希望锚定标记中有多行,请按如下方式操作:

<a.*(href).*(goto).*(>)(.|\n)*<\/a>

一般来说,您使用什么语言/工具/任何东西来“执行”您的正则表达式。不过,在您的特定情况下,您可能可以使用multiline标志来解决这个问题,也可以使用解析器而不是使用regexp进行处理。这可能更容易。你没有提到你在哪个平台上,或者可能有人建议你,请再次查看编辑后的问题。我正在使用PHP,因为解析器是最佳实践。
<a.*(href).*(goto).*(>)(.|\n)*<\/a>