Swift Regex для получения токена со страницы html - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть страница html, подобная этой:

<!DOCTYPE html>
   <html>
  <head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <meta name="viewport" content="width=device-width, initial- 
    scale=1"/>
    <title>Odoo</title>
    <link type="image/x-icon" rel="shortcut icon" 
   href="/web/static/src/img/favicon.ico"/>
    <script type="text/javascript">
                var odoo = {
                    csrf_token: 
    "999b60e0c81591c5909866b2421e01ff397bcc16o",
                };
             </script>
       <meta name="theme-color" content="#875A7B"/>

Я хочу получить значение csrf_token, как я могу это сделать, пожалуйста?

Я пробовал что-то подобное

let a = text!.matchingStrings(regex: "\"csrf_token\":([A-z0-9]*")

с

extension String {
  func matchingStrings(regex: String) -> [[String]] {
     guard let regex = try? NSRegularExpression(pattern: regex, 
  options: []) else { return [] }
    let nsString = self as NSString
    let results  = regex.matches(in: self, options: [], range: 
  NSMakeRange(0, nsString.length))
    return results.map { result in
        (0..<result.numberOfRanges).map {
            result.range(at: $0).location != NSNotFound
                ? nsString.substring(with: result.range(at: $0))
                : ""
        }
    }
    }
  }

Но это не работает.

Буду признателен за любую помощь.

РЕДАКТИРОВАТЬ

как @Pushpesh Кумар Раджванши предлагает решение:

let regex = try NSRegularExpression (pattern: "\""csrf_token \": ([A-z0-9] * ")

1 Ответ

0 голосов
/ 14 февраля 2019

Почему вы заключаете csrf_token в двойные кавычки, когда в вашей строке оно не заключено в нее?Кроме того, после csrf_token:, похоже, есть пробел, следовательно, ваше регулярное выражение не работает.Вы можете использовать это регулярное выражение

csrf_token:\s*"([^"]*)"

и захватить group1 для извлечения текста для атрибута csrf_token.На вашем языке вам, возможно, придется бежать ", как вы делали это в своем регулярном выражении.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...