簡體   English   中英

在兩個字符之間使用正則表達式選擇值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM