我有一个页面 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 Kumar Rajwanshi 一样建议解决方案是
let regex = try NSRegularExpression(pattern: "\"csrf_token\":([A-z0-9]*")
最佳答案
为什么在字符串中没有用双引号将 csrf_token
括起来。 csrf_token:
之后似乎还有一个空格,因此您的正则表达式无法正常工作。你可以使用这个正则表达式,
csrf_token:\s*"([^"]*)"
并捕获 group1 以提取 csrf_token
属性的文本。在您的语言中,您可能必须像在正则表达式中那样转义 "
。
关于html - Swift Regex 从页面 html 中检索 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54686012/