我希望得到任何]字符才能回来 “这个” 值从文本正则表达式:让所有的比赛,直到某个字符
例:
TEXT:
start[hello:"", world:"", dsdsd:"", this:"a", wqewq:"", this:"b"], fdsfds, this:"c"
预期:
a, b
https://regex101.com/r/eZ7nN8/3PS:我整天都在试,真的很沮丧。
我希望得到任何]字符才能回来 “这个” 值从文本正则表达式:让所有的比赛,直到某个字符
例:
TEXT:
start[hello:"", world:"", dsdsd:"", this:"a", wqewq:"", this:"b"], fdsfds, this:"c"
预期:
a, b
https://regex101.com/r/eZ7nN8/3PS:我整天都在试,真的很沮丧。
想要的串,则可以使用这种模式的:
this:"\K[^"]+(?=")|](*COMMIT)(*F)
\K
和lookahead (?=")
在此处用于避免创建捕获组。 \K
从整个比赛中删除左侧的所有内容。因此整个比赛只包含引号之间的内容。
回溯控制动词(*COMMIT)
强制整个比赛失败,如果模式后来失败。由于(*F)
使模式失败,因此在达到]
时停止研究。
顺便说一句,你甚至不需要预见:'this:“\ K [^”] + |](* COMMIT)(* F)'就够了。我没有得到你对'\ K和前瞻(?=“)的解释,这里用来避免创建一个捕获组。”我在这里没有看到任何捕获组。那么,用简单的术语来说,'](* COMMIT)(* F)'在这里只是一种预测 - 使用它而不是向前看有什么好处? –
@stribizhev:前瞻只是在这里更具描述性(因为它可能会阻止匹配字符串末尾的不平衡报价)。关于构造'](* COMMIT)(* F)',主要的兴趣在于避免为每个匹配测试字符串直到']'。 –
@stribizhev:为了更高效,模式可以这样写:'〜this:“\ K([^”] *(?=“)|](* COMMIT)(* F)〜S', 'S'修饰符改进了搜索,当一个交替的分支开始于一个文字时,不幸的是regex101不支持这个修饰符。 –
在此处发布一个示例以及预期输出。还有你正在运行的语言。 –