我不是Regex字符串中最伟大的专家,所以我迷失了这个应该在这里找到的东西:
@"\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)"
我正试图为应用程序获得降价模式。任何人都可以帮我找到应该找到的模式集吗?
答案 0 :(得分:1)
正则表达式似乎与Markdown格式化超链接相匹配。特别是那些直接指定链接但不使用引用样式的那些。
[linked text](http://www.example.com/hyperlink "optional tooltip")
捕获第1组包含链接文本 捕获组2包含超链接 捕获组4包含可选的工具提示。
以下是此问题的示例超链接,一个包含,另一个没有工具提示:
上述2个超链接的来源:
- [What will this regular expression detect?](https://stackoverflow.com/questions/26285433/what-will-this-regular-expression-detect "What will this regular expression detect?") (try hovering your mouse over this one)
- [What will this regular expression detect?](https://stackoverflow.com/questions/26285433/what-will-this-regular-expression-detect)
您可以尝试将上面的示例文本与正则表达式进行匹配。一旦看到结果,它就会变得清晰。这是demo on regex101。
(我在上面的演示中写了\[(.*?)\]\((\S+)(\s+("|')(.*?)("|'))?\)
,因为它是正则表达式引擎所看到的)
答案 1 :(得分:0)
\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)
请参阅ICU用户指南Regular Expressions
当需要\字符来转义正则表达式运算符时,它们必须自己在字符串中转义。
\\[ matchs [ ( starts capture group 1 .*? matches anything 0 or more times as few times as possible. ) ends capture group 1 \\] matches ] \\( matches ( ( starts capture group 2 \\S+ matches all non-space characters ) ends capture group 2 ( starts capture group 3 \\s+ matches one or more space characters ( starts capture group 4 \"|\' matches a " or ' ) ends capture group 4 ( starts capture group 5 .*? matches anything 0 or more times as few times as possible )) ends capture group 5 ( starts capture group 6 \"|\' matches a " or ' ) ends capture group 6 )? ends capture group 3 of zero or one matches \\) matches )