REGEX模式处理有或没有报价

REGEX Pattern to deal with or without quotes

本文关键字:处理 REGEX 模式      更新时间:2023-09-26

我有以下解析所需的BBCode

[网址=http://www.google.com]谷歌[/url][url="http://www.google.com"]谷歌[/url]

我想做的是提取两者http://www.google.com谷歌

现在,上面两段BBCode的区别在于第二段BBCode中url周围的引号。

一个正则表达式代码是否可以提取我的数据点并说明引号的存在或缺失?

谢谢!

编辑:只是为了进一步澄清。我目前正在使用以下Regex模式:

/''[URL=''"?([''s''s]*?)''"?'']([''s''s]*?)''[''/URL'']/gi

如果URL是否用引号括起来,这将成功匹配URL。然而,我希望最终结果去掉所有引号。通过实际的regex模式本身,是否可以简单地不在匹配中包含引号(如果引号存在)

是:

/'[url=("?)(http://www'.google'.com)'1'](Google)'['/url']/

将捕获CCD_ 1或CCD_;'http://www.google.com';和CCD_ 4。

(我意识到您实际上不需要捕获'"''',但这就是regex要求双引号同时存在或不存在的方式。我还意识到,除了您的示例之外,您可能还需要涵盖其他链接目标和链接文本,但我假设您已经知道如何处理这一点,并且只是在询问可选doub的问题le引号?)

为了使其更通用,您可以执行以下操作:

/'[url='"?(https?://[^"']]+)"?']([^'[]+)'['/url']/

它将为您提供'' 1中的URL和'' 2 中的标签