Я хочу перейти по ссылке, содержащей $ foo AND $ bar.Как я могу перейти по ссылке, содержащей 2 вещи, используя Mechanize в Perl?
Я пробовал это, и он не работал.
$mech->follow_link(url_regex => qr/$foo/i && url_regex => qr/$bar/i)
Я хочу перейти по ссылке, содержащей $ foo AND $ bar.Как я могу перейти по ссылке, содержащей 2 вещи, используя Mechanize в Perl?
Я пробовал это, и он не работал.
$mech->follow_link(url_regex => qr/$foo/i && url_regex => qr/$bar/i)
Вы можете написать регулярное выражение, которое соответствует как подшаблонам:
qr/(?=.*?$foo)(?=.*$bar)/is
Это использует два lookaheads, которые могут соответствовать в любом месте строки, в связи с префиксом .*
.
Обратите внимание, что это более неэффективно и что подобранная подстрока будет отличаться.
На сайте, на котором я работаю, будет только 1 ссылка, содержащая как $ foo, так и $ bar в этом порядке, но есть и другие ссылки, которые содержат либо $ foo, либо $ bar. Будет ли это выбирать эту конкретную ссылку? – Robert
Если он всегда будет в том же порядке ('$ foo' в начале строки,' $ bar' позже), вы можете просто использовать 'qr/$ foo. * $ Bar/i' и сэкономить много усилий. – AKHolland
@Robert Что сказал А.Холланд. Мое регулярное выражение AND объединяет два подподразделения (оно совпадает, если обе части совпадают). Если только одна часть должна соответствовать, просто используйте чередование: 'qr/$ foo | bar /'. – amon