Я создаю приложение на основе Sinatra и пытаюсь проанализировать длинную строку с использованием регулярного выражения, чтобы вытащить ссылку из него.Как использовать регулярное выражение для получения определенной части строки
Вот выдержка из строки с соответствующей информацией, что мне нужно извлечь:
time=18ms\n[INFO] Calculating CPD for 0 files\n[INFO] CPD calculation finished\n[INFO] Analysis report generated in 325ms, dir size=14 KB\n[INFO] Analysis reports compressed in 187ms, zip size=8 KB\n[INFO] Analysis report uploaded in 31ms\n[INFO] ANALYSIS SUCCESSFUL, you can browse http://sonar.company.com/dashboard/index/com.company.paas.maventestproject:MavenTestProject\n[INFO] Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report\n[INFO] More about the report processing at http://sonar.company.com/api/ce/task?id=AVhFxTkyob-dgWZqnfIn\n[INFO] -----------------------------------------------------------------------
мне нужно, чтобы быть в состоянии осуществить следующее:
http://sonar.company.com/api/ce/task?id=AVhFxTkyob-dgWZqnfIn
Ближайший я получил с /(?=http).[a*-z]*/
, но это не так, как было найдено 615 матчей вместо 1.
Проблема также в том, что идентификатор AVhFxTkyob-dgWZqnfIn
не является статистическим ic, изменение для каждой сборки.
Я использовал Rubular.com, чтобы найти правильное регулярное выражение, которое мне нужно использовать.
Это любое хорошее: '/ http: \/\/\ S + /'? См. [Здесь] (http://www.rubular.com/r/aHG7BZZAmw) для демонстрации. –
Вместо того, чтобы загружать весь файл в строку, прочитайте его по очереди. Таким образом, вы можете быстро отбросить строки, которые не начинаются с '[INFO]'. Затем проверьте строку с помощью '\ bhttp: // \ S *' и проанализируйте URL-адрес. –
Вам необходимо указать правила для идентификации строки, которую вы хотите извлечь. В вашем примере вы показываете нужную строку, но не говорите нам * почему * именно эта строка. Это как сказать, что у вас есть массив чисел '[3,5,8,12,13,20]' и хотите знать, как выбрать '[3,5,13]'. Это потому, что это нечетные числа, простые числа или что-то еще? Вы должны начать свой вопрос с утверждения проблемы, а затем привести пример, когда это необходимо. Когда вы редактируете, чтобы уточнить, не добавляйте «EDIT:». Наконец, в будущем, пожалуйста, сваривайте свои примеры до самых простых вещей. –