在正则表达式中匹配多个表达式

问题描述:

我很难在我的正则表达式中匹配多个模式,我想知道什么可能是错的。在正则表达式中匹配多个表达式

我的测试字符串:https://api.github.com/repos/baxterthehacker/public-repo/releases/1261438

这些预期工作:

/https:\/\/api\.github\.com\/repos\/ 

匹配:https://api.github.com/repos/

/\/releases\/.* 

匹配:/发行/ 1261438

我的问题是怎么做的我把这两个结合成一个声明?这是我尝试过的,但它只匹配第一个模式,而不是第二个模式,因为某些原因。

/(https:\/\/api\.github\.com\/repos\/)|(\/releases\/.*)/ 

匹配:https://api.github.com/repos/

我在做什么错?为什么第二种模式被忽略?

+1

你是如何测试最后一个正则表达式的?请参阅https://regex101.com/r/K3VRZo/1 –

+0

它看起来像添加全局标志的伎俩。现在弄清楚如何让红宝石玩得好。 :) 谢谢! –

+0

所以,问题是关闭=主题,因为你没有在目标环境中运行正则表达式。如何测试在线测试人员的正则表达式是无关紧要的。你想编辑问题以显示真正的问题,还是应该关闭它? –

|运算符的正则表达式。它确实不是做串联。尝试从您的正则表达式字符串中删除|字符并查看魔法。

正则表达式/(https:\/\/api\.github\.com\/repos\/).*(\/releases\/.*)/有窍门。

+0

但是当我运行这个(通过https://regex101.com/),它匹配整个字符串。我在Ruby中试图做的是匹配第一种模式和第二种模式,并将它们除去,留下遗留下来的东西。我期待的是“匹配这种模式和这种模式”。这可能吗? –

+0

所需的分组('()'中的内容已经存在)。请参阅[此处](http://stackoverflow.com/a/9304049/284416)以了解如何访问分组的子表达式匹配。否则,只需使用特殊匹配变量** $ 1 .. $ n **来访问那些(更多关于此[此处](http://stackoverflow.com/a/9304046/2844164))。请注意,这些特殊的匹配变量几乎适用于任何支持正则表达式匹配的语言。 – Quirk