猿问

变量正则表达式 ("*" 这个字符可能在这里也可能不在这里)VALUE*

如果我想在正则表达式中搜索以下内容,我怎么可能做到这一点?


我想在每个字符串中获得“价值”。


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]+|])?


狐的传说
浏览 124回答 2
2回答

MMTTMM

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

您可以使用分支重置组来匹配两个选项,其中组共享相同的索引并匹配和捕获分隔子字符串或 1 个或多个非空白字符:this-is-a-set-syntax:\s*(?|(["|*])(.*?)\1|()(\S+))查看正则表达式演示细节this-is-a-set-syntax: - 一些字符串\s* - 0+ 个空格(?| - 分支复位组的开始(["|*])- 第 1 组:指定字符之一:",|或*(.*?) - 第 2 组:除换行符以外的任何 0 个或更多字符,尽可能少\1 - 与第 1 组相同的值| - 或者() - 匹配空字符串的虚拟组 1(\S+) - 第 2 组:除空格之外的一个或多个字符) - 分支复位组结束。
随时随地看视频慕课网APP
我要回答