Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式是否阻止匹配嵌套匹配?_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式是否阻止匹配嵌套匹配?

Javascript 正则表达式是否阻止匹配嵌套匹配?,javascript,regex,Javascript,Regex,我有以下字符串: "hello x { x {} } world" 我想要第一对,但不是第二组。正则表达式应该输出以下内容:“x{x{}}”,但它会输出内部的x{} 我可以让正则表达式只捕获父对象而不捕获子对象吗 像这样简单的检查:/x{}/g不行。这是显而易见的原因,但我不知道什么技术可以用来绕过这一点 您可以尝试使用以下选项: x\s*{.*} 您可以尝试使用以下方法: x\s*{.*} 特定于您的字符串这是我能生成的最简单的: x {?.+} 参考:特定于您的字符串这是我能生成的最

我有以下字符串:

"hello x { x {} } world"
我想要第一对,但不是第二组。正则表达式应该输出以下内容:“x{x{}}”,但它会输出内部的x{}

我可以让正则表达式只捕获父对象而不捕获子对象吗


像这样简单的检查:/x{}/g不行。这是显而易见的原因,但我不知道什么技术可以用来绕过这一点

您可以尝试使用以下选项:

x\s*{.*}

您可以尝试使用以下方法:

x\s*{.*}

特定于您的字符串这是我能生成的最简单的:

x {?.+}

参考:

特定于您的字符串这是我能生成的最简单的:

x {?.+}


参考:

虽然您可以通过修改regex(Idunno)来实现这一点,但我也可以想象通过以不同的方式循环目标字符串来修复它,不断跟踪第一个搜索索引,并在找到索引时将其移动到模式的末尾。解析包含嵌套括号或括号之类内容的语法通常需要比正则表达式更强大的解析器。hello x{x{y{}p{zoo}world{Reach}的输出应该是什么?@anubhava“x{x{}}”@Asperger该字符串不在anubhava给出的示例中。我想他只是建议你考虑一下潜在的深卷曲支撑水平。沿着这些思路,我建议您使用JS逻辑手动检查正则表达式的给定容器值,并可能忽略任何具有{和}值数量不匹配的结果(例如,这样您就可以忽略“x{”作为容器结果),而您可以通过更改正则表达式(Idunno)来实现这一点,我还可以想象通过以不同的方式循环目标字符串来修复它,不断跟踪第一个搜索索引,并在找到索引时将其移动到模式的末尾。解析包含嵌套括号或括号之类内容的语法通常需要比常规表达式更强大的解析器“hello x{x{y{}p{}zoo}world{Reach}”?@anubhava“x{x{}”的输出应该是什么@Asperger,该字符串不在anubhava给出的示例中。我认为他只是建议您考虑潜在的深花括号级别。按照这些思路,我建议您使用JS逻辑手动检查正则表达式的给定容器值,并且可能忽略任何具有不匹配的{和}值的结果(例如,这样你就可以忽略“x{”作为容器结果)我们应该使用点运算符还是尽可能具体?或者这与性能无关?更新了答案@AsperAccepted。两者都有效,但这一个更干净。尽管我不会使用点,但要尽可能具体。但是,嘿,这是我的观点:)内容是否仅限于少数几种可能性?如果是这样,请提及,我会尽力使其尽可能具体。由于缺乏内容描述/可能性,我唯一能想到的是什么?可以,我可以自己调整:)谢谢你的回答。我们应该使用点运算符还是尽可能具体?还是不matter performancewise?更新了答案@AsperAccepted。两者都有效,但这一个更干净。虽然我不会使用点,但要尽可能具体。但是,嘿,这是我的观点:)内容是否仅限于几种可能性?如果是,请提出来,我会尽量具体,现在。这是我唯一能想到的e由于缺少内容描述/可能性,我可以自己调整:)谢谢你的答案,而你的答案是:)为什么所有人都使用(.)我认为这是性能杀手?你可以省略转义标记\为什么第一个{可选?这会在hello x Asdsa上触发}。这也不适用于空括号,即:x{}@Maslo,没错。我试图提供阿斯伯格可以根据需要构建的最简单答案。你的修订答案同样有效,并且有几个变体会强化结果。选择你的答案:)为什么所有人都使用(.)我认为这是一个性能杀手?你可以忽略转义标记\n为什么第一个{可选?这会在hello x asdsa}上触发。这在空括号上也不起作用,即:x{}@马斯洛,是的。我试图提供阿斯伯格可以根据需要构建的最简单答案。你修改后的答案同样有效,并且有几种变体会强化结果。