[英]Selecting values with regex between two characters
我需要正則表達式方面的幫助,我已經添加了一些關於我正在嘗試做的工作的 Playground 代碼來提供幫助。
如果 key="id" 它應該返回:862 如果 key="pos" 應該返回:-301.5, 61.7, 364.6
我的正則表達式是var expression = key+"=(.*?)[^,]+"這有點接近,但不完全是我想要的。
任何幫助表示贊賞!
import UIKit
var data = "0. id=862, pos=(-301.5, 61.7, 364.6), rot=(-7.0, -2735.2, 0.0), remote=True, health=125"
var key = "id"
var expression = key+"=(.*?)[^,]+"
var match = data.range(of: expression, options: .regularExpression);
var value = data.substring(with: match!)
print(value)
您可以使用匹配字符串
var expression = "(?<=" + key+"=)(?:\\([^()]+\\)|[^,\\s]+)"
查看正則表達式演示,它匹配
(?<=pos=)
- 后跟=
的key
必須緊跟在當前 position 之前(?:\([^()]+\)|[^,\s]+)
- 匹配任一
\([^()]+\)
- 一個(
, 除(
和)
之外的 1+ 個字符,然后)
|
- 或者[^,\s]+
- 除空格和逗號之外的 1+ 個字符。 然后,在獲得匹配項后,刪除尾隨(
和)
:
var value = data.substring(with: match!).trimmingCharacters(in: ["(",")"])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.