2 回答
TA貢獻1869條經驗 獲得超4個贊
Using[?"](.*)[?"]將匹配其中之一,?"然后匹配除換行符之外的任何字符 0+ 次,然后再次?"匹配字符串中的最后一次出現。它可以過度匹配并且不保證伴隨的結束字符。
要在所有示例中獲得價值,您可以使用捕獲組并將可選雙引號("?)與反向引用\1匹配,以解釋匹配的結束雙引號。
如果您只想匹配沒有任何空格的值并且值本身不能包含任何*|"您可以使用的值:
this-is-a-set-syntax:\h+([*|"]?)([^\s*|"]+)\1(?!\S)
解釋
this-is-a-set-syntax:\h+匹配字面后跟 1+ 個水平空白字符([*|"]?)第 1 組,匹配一個可選的*|或?([^\s*|"]+)第 2 組,匹配除空白字符以外的任何字符 1+ 次,*|或?\1反向引用第 1 組中準確捕獲的內容以獲得伴隨的結束字符(?!\S)負前瞻,斷言右邊的不是非空白字符
TA貢獻1852條經驗 獲得超7個贊
您可以使用分支重置組來匹配兩個選項,其中組共享相同的索引并匹配和捕獲分隔子字符串或 1 個或多個非空白字符:
this-is-a-set-syntax:\s*(?|(["|*])(.*?)\1|()(\S+))
查看正則表達式演示
細節
this-is-a-set-syntax:- 一些字符串\s*- 0+ 個空格(?|- 分支復位組的開始(["|*])- 第 1 組:指定字符之一:",|或*(.*?)- 第 2 組:除換行符以外的任何 0 個或更多字符,盡可能少\1- 與第 1 組相同的值|- 或者()- 匹配空字符串的虛擬組 1(\S+)- 第 2 組:除空格之外的一個或多個字符)- 分支復位組結束。
- 2 回答
- 0 關注
- 151 瀏覽
添加回答
舉報
