Кто-нибудь может помочь мне понять, почему это регулярное выражение \(\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#
верный. Я хочу сопоставить config
как целое слово
Можете ли вы показать код, в котором вы компилируете строку регулярного выражения? Я поместил ваше регулярное выражение в regexr, и оно соответствует всем трем строкам
То, что у вас есть, означает один или несколько символов слова \w+
, и вы указываете, что самый последний символ не должен быть любым из c, o, n, f, i, or g
. Однако последний символ в epam_contractor_soasta_web_svc
- это c
. Следовательно, он не соответствует этой строке.
Шаблон \(\w+[^config]\)
исключает все, что заканчивается любым из символов в config
(c
, o
, n
, f
, i
, g
), но не саму строку config
. Это означает, что если бы у вас было значение (i_end_in_c)
, оно также не было бы сопоставлено (потому что оно заканчивается на c
). То же самое применимо к (i_end_in_o)
, (i_end_in_n)
и т. д.
По этой же причине не обнаруживается (epam_contractor_soasta_web_svc)
- потому что он заканчивается на c
.
Вместо этого вы должны использовать отрицательный просмотр вперед:
\((?!config)\w+\)
Вышеупомянутое не будет соответствовать ни одной строке, начинающейся с config
.
Что ж, я бы начал с того, что
[^config]
означает «ни один из символов c, o, n, f, i или g», что, вероятно, не то, что вы имели в виду.