Я не уверен на 100%, что вы делаете, но это проблема:
while ($result =~ m/$start(.*?)$end/g)
Какова цель этого цикла? Вы берете скаляр с именем $result
и проверяете соответствие шаблону. Как меняется $result
?
Ваш оригинальный вопрос был, как это сделать:
http://site.com/index.php?id=15
в это:
http://site.com/index.php?id=
То есть как вы удаляете 15
(или другое число) из выражения. Ответ довольно прост:
$url =~ s/=\d+$/=/;
Это будет привязывать ваше регулярное выражение в конце URL, заменяя конечные цифры ничем.
Если вы удаляете какую-либо строку, она немного сложнее:
$url =~ s/=[^=]+/=/;
Вы не можете просто использовать \S+
, потому что регулярные выражения обычно жадные. Поэтому вы хотите указать любую серию символов со знаком, отличным от знака равенства, перед которыми стоит знак равенства.
Теперь, что касается цикла while
, может быть, вы хотите вместо него оператор if ...
if ($result =~ /$start(.*?)$end/g) {
print "Doing something if this matched\n";
}
else {
print "Doing something if there's no match\n";
}
И я не уверен, что это значит:
Я использую Bing! вместо Google.
Вы пытаетесь проанализировать ввод от Bing !? Если да, пожалуйста, объясните, что вы на самом деле пытаетесь сделать. Может быть, мы знаем лучший способ сделать это. Например, если вы анализируете выходные данные результатов поиска, возможно, вы можете использовать API.