簡體   English   中英

提取`<key> :<value> ` 與正則表達式配對</value></key>

[英]Extracting `<key>:<value>` pairs with regex

有一個 textarea 並想用key:value提取(如下圖所示)

在此處輸入圖像描述

我有一個正則表達式,但沒有按預期工作

/([^\s][a-zA-Z!]+:(\s)?"?([a-z0-9\s.]+)"?[^ $])/gi

如果用戶當時輸入以下字符串,則正則表達式會破壞組key:value

is:"browser" browser: "chrome 11.11 V" node: error type:"Error"

預期組:

is:"browser"
browser: "chrome 11.11 V"
node: error 
type:"Error"

您可以使用

 const text = 'is:"browser" browser: "chrome 11.11 V" node: error type:"Error"'; const re = /(\w+):\s*(?:"([^"]*)"|(\S+))/g; let dict = {}, m; while(m = re.exec(text)) { dict[m[1]]=(m[3] || m[2]); } console.log(dict); // Or just get all matches: console.log(text.match(re))

請參閱正則表達式演示 詳情

  • (\w+) - 第 1 組:一個或多個單詞字符
  • : - 一個冒號
  • \s* - 零個或多個空格
  • (?:"([^"]*)"|(\S+)) - 任何一個
    • "([^"]*)" - " , 0+ 個非逗號(在第 2 組中捕獲), "
    • | - 或者
    • (\S+) - 第 3 組:一個或多個非空白字符。

正則表達式:

/([a-zA-Z!]+:\s*[" ]?([a-z0-9\s.]+)[" $])/gi

文本:

sdfd:"dsffs" dsfd: "dsf demo" sfd: dsf fdsff:"fdsfsdf"

列表:

sdfd:"dsffs"
dsfd: "dsf demo"
sfd: dsf 
fdsff:"fdsfsdf"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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