正则表达式不匹配模式

时间:2018-08-10 15:10:14

标签: python regex

任何人都可以帮助我理解为什么正则表达式\(\w+[^config]\)与以下字符串中的(epam_contractor_net)(ctmain1_soasta_eucap1_coresys)而不是(epam_contractor_soasta_web_svc)匹配吗?

config term

fw1-ravpn-lab-lon(config)# no object-group service epam_contractor_soasta_web_s$m_contractor_soasta_web_sv                         cno object-group service epam_contractor_soasta_web_$
Removing object-group (epam_contractor_soasta_web_svc) not allowed, it is being used.

fw1-ravpn-lab-lon(config)# no  service-object tcp destination eq www
                                       ^
ERROR: % Invalid input detected at '^' marker.

fw1-ravpn-lab-lon(config)# no object-group network epam_contractor_net
Removing object-group (epam_contractor_net) not allowed, it is being used.

fw1-ravpn-lab-lon(config)# no object-group network ctmain1_soasta_eucap1_coresy$ain1_soasta_eucap1_coresys                         no object-group network ctmain1_soasta_eucap1_cores$
Removing object-group (ctmain1_soasta_eucap1_coresys) not allowed, it is being used.

fw1-ravpn-lab-lon(config)# end

fw1-ravpn-lab-lon# 

2 个答案:

答案 0 :(得分:0)

您所拥有的意思是一个或多个单词字符\w+,并且您指定最后一个字符不应为c, o, n, f, i, or g中的任何一个。但是,epam_contractor_soasta_web_svc中的最后一个字符为c。因此,它与该字符串不匹配。

答案 1 :(得分:0)

模式\(\w+[^config]\)将排除以configconfig),而不是字符串config本身。这意味着,如果您有一个值(i_end_in_c),那么它也将不匹配(因为它以c结尾)。 (i_end_in_o)(i_end_in_n)等也是如此。

这与未找到(epam_contractor_soasta_web_svc)的原因相同-因为它以c结尾。

您应该改用否定的前瞻:

\((?!config)\w+\)

以上内容与以config开头的任何字符串都不匹配。