我正在尝试创建正则表达式来解析降价链接。
正则表达式:
!\[[^\]]*\]\((.*)\s"(.*[^"])"?\s*\)
Run Code Online (Sandbox Code Playgroud)
测试(链接到现场演示):
foo

bar
Run Code Online (Sandbox Code Playgroud)
第 1 组将是image 2.png,第 2 组将是hello world。
当我尝试解析没有标题的链接时出现问题:
foo

bar
Run Code Online (Sandbox Code Playgroud)
我应该如何修改正则表达式以使其在两种情况下都能正常工作?
您必须将第二组设为可选,因为它并不总是存在。此外,您可以使用命名组获得更好的可读性,可能是这样的:
!\[[^\]]*\]\((?<filename>.*?)(?=\"|\))(?<optionalpart>\".*\")?\)
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/cSbfvF/3/
或者,您修复的原始正则表达式将是:
!\[[^\]]*\]\((.*?)\s*("(?:.*[^"])")?\s*\)
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/u2DwY2/2/