Regex 正则表达式新行不正确
我想在href属性中匹配包含“goto”的所有锚定标记的模式。我使用的是php。我想匹配以下链接: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
<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>