正则表达式括号之间的匹配(...)

时间:2015-10-29 02:40:32

标签: regex

我正试图从一条简单的线上抓取两件物品。

[Title](Description)
编辑:实际上是一个寻找显示的网址称为描述,因为我希望显示它实际上没有被解析。

[Trivium](https://www.youtube.com/user/trivium)

在括号(...)之间抓取对我来说似乎根本不起作用。我用Google搜索并发现了几个没有运气的变化,提前谢谢:)

编辑:

尝试以下方法:

[(.+?)]\((.*)\)
[(.+?)]\([^\(\r\n]*\)
[(.+?)]((.+?))

和cpl我再也找不到了

1 个答案:

答案 0 :(得分:4)

您列出的第一个正则表达式几乎是正确的。请尝试使用此正则表达式:

\[.+?\]\((.*)\)

正如@PM 77-1指出的那样,你需要通过在它们前面放一个反斜杠来转义括号。原因是括号是特殊的正则表达式元字符或具有特殊含义的字符。括号告诉正则表达式引擎查找其中包含的字符类。

您的原始正则表达式[(.+?)]\((.*)\)实际上是这样做的:

[(.+?)]   match a period '.' 1 or more times
\((.*)\)  match (anything), i.e. anything contained in parentheses

所以这个正则表达式匹配.....(stuff)但是匹配[Title](Description),后者就是你真正想要的。

这是一个可以测试正则表达式的链接:

Regex 101