正则表达式(PHP风格)匹配多行或非多行
我正在处理一个正则表达式,它将匹配以下两段语法 一, 二, 到目前为止我得到的最好的结果是 ^aaa会计系统默认\n操作类型|开始-停止\n |组tacacs\+ 上面的正则表达式将匹配语法编号2而不是1?把我的头发拔出来!我知道这可能很简单,但我是个Regex新手有什么想法吗? 在第1条语法中,第2行和第3行的开头有空格,但是没有显示出来,以便真正了解语法是如何呈现的。请查看下面的Regex101链接。谢谢 这是在Regex101中正则表达式(PHP风格)匹配多行或非多行,php,regex,multiline,Php,Regex,Multiline,我正在处理一个正则表达式,它将匹配以下两段语法 一, 二, 到目前为止我得到的最好的结果是 ^aaa会计系统默认\n操作类型|开始-停止\n |组tacacs\+ 上面的正则表达式将匹配语法编号2而不是1?把我的头发拔出来!我知道这可能很简单,但我是个Regex新手有什么想法吗? 在第1条语法中,第2行和第3行的开头有空格,但是没有显示出来,以便真正了解语法是如何呈现的。请查看下面的Regex101链接。谢谢 这是在Regex101中 要跨多行匹配,需要使用DOTALL标志: 否则: /\baa
要跨多行匹配,需要使用DOTALL标志: 否则:
/\baaa accounting system default.*?group tacacs\+/s
要跨多行匹配,需要使用DOTALL标志: 否则:
/\baaa accounting system default.*?group tacacs\+/s
您可以将模式中的常规空格替换为与任何空格匹配的\s:
'~^aaa\s+accounting\s+system\s+default(?:\s+action-type)?\s+start-stop\s+group\s+tacacs\+~m'
见
此外,我还进行了一些其他优化,以便可以匹配两种类型的字符串:
^-匹配由于/m修改器而导致的行的开头
aaa\s+记帐\s+系统\s+默认-匹配序列aaa记帐系统默认值,其中\s+匹配一个或多个空格
?:\s+动作类型?-可选的操作类型,在操作类型之前有一个或多个空格
\s+start stop\s+group\s+tacacs\+-匹配单词之间有1个或多个空格的start stop group tacacs+。
您可以将模式中的常规空格替换为与任何空格匹配的\s:
'~^aaa\s+accounting\s+system\s+default(?:\s+action-type)?\s+start-stop\s+group\s+tacacs\+~m'
见
此外,我还进行了一些其他优化,以便可以匹配两种类型的字符串:
^-匹配由于/m修改器而导致的行的开头
aaa\s+记帐\s+系统\s+默认-匹配序列aaa记帐系统默认值,其中\s+匹配一个或多个空格
?:\s+动作类型?-可选的操作类型,在操作类型之前有一个或多个空格
\s+start stop\s+group\s+tacacs\+-匹配单词之间有1个或多个空格的start stop group tacacs+。
它不起作用,因为您的可选组中有冗余空间:
^aaa accounting system default(\n action-type|) start-stop(\n|) group tacacs\+
您可以使用非捕获组以更好的方式编写它?:。。。还有可选的量词
这样可以避免无用的捕获因为可选组中有多余的空间,所以它不起作用:
^aaa accounting system default(\n action-type|) start-stop(\n|) group tacacs\+
您可以使用非捕获组以更好的方式编写它?:。。。还有可选的量词
这样可以避免无用的捕获我对问题进行了编辑,使示例字符串看起来与regex101.com上的相同。如果空格可以是任意大小,我会投票支持我的答案:我编辑了这个问题,使示例字符串看起来与regex101.com上的相同。如果空格真的可以是任意大小,我会投票支持我的答案:注意,要匹配所有Unicode空格,不要忘记在正则表达式的末尾添加一个/u修饰符:“^aaa\s+accounting\s+system\s+default?”:\s+动作类型?\s+开始-停止\s+组\s+tacacs\+~mu”很棒的东西,我也学到了一些东西!谢谢你的帮助!非常感谢,不客气。注:我也更喜欢与?应用于它们的量词,如?:。。。?当我需要在我的模式中使用可选字符序列作为Casimir答案中的注释时。再次感谢非捕获组链接帮助我很好地处理了它。注意,要匹配所有Unicode空白,别忘了在正则表达式的末尾添加a/u修饰符:“^aaa\s+accounting\s+system\s+default:\s+操作类型?\s+开始-停止\s+组\s+tacacs\+~mu”很棒的东西,我也学到了一些东西!谢谢你的帮助!非常感谢,不客气。注:我也更喜欢与?应用于它们的量词,如?:。。。?当我需要在我的模式中使用一个可选的字符序列作为Casimir在他的答案中的注释时。再次感谢非捕获组链接帮助我很好地处理了它谢谢你的输入!谢谢你的意见!
^aaa accounting system default(?:\n action-type)? start-stop\n? group tacacs\+