如果我想在正则表达式中搜索以下内容,我怎么可能做到这一点?我想在每个字符串中获得“价值”。this-is-a-set-syntax: VALUE "in 9"(this can be here sometimes and not)regex: /this-is-a-set-syntax: "(.*)"如果我想检测"它是否在那里,那么我该怎么做?我认为它应该怎么写:regex: /this-is-a-set-syntax: [?"](.*)[?"]this-is-a-set-syntax: "VALUE" (sometimes there is quotes)this-is-a-set-syntax: "VALUE" (sometimes there is quotes)this-is-a-set-syntax: VALUE (sometimes there is no quotes at all)如果我想尝试检测所有这些,我会尝试这样的事情。this-is-a-set-syntax: ["|*|]VALUE["|*|][? in [0-9]+|]-- 更新 -- 以下所有答案,但这是我认为最合适的答案。话虽如此,它们都有效,它们都是很好的答案。为了教育目的,你们都可以用一点解释来更新你的答案吗?谢谢,这最适合我的回答:this-is-a-set-syntax: ["|*|]?VALUE["|*|]?([? in [0-9]+|])?不错,但上衣更合身:this-is-a-set-syntax:["* ]*VALUE["* ]*?([? in [0-9]+|])?我也喜欢下面一张。我个人从未见过 \1 并且也有兴趣了解有关此答案的更多信息。如果可以,我会标记所有,但我认为顶部最接近我需要的。this-is-a-set-syntax:["* ]*VALUE["* ]*?([? in [0-9]+|])?
2 回答
MMTTMM
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)
负前瞻,断言右边的不是非空白字符
慕姐4208626
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 关注
- 123 浏览
添加回答
举报
0/150
提交
取消