【发布时间】:2014-10-09 18:22:05
【问题描述】:
我不是正则表达式字符串方面最伟大的专家,所以我不知道这个应该在这里找到什么:
@"\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)"
我正在尝试为应用提供降价模式。谁能帮我找出应该找到哪些模式?
【问题讨论】:
标签: ios regex nsstring markdown
我不是正则表达式字符串方面最伟大的专家,所以我不知道这个应该在这里找到什么:
@"\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)"
我正在尝试为应用提供降价模式。谁能帮我找出应该找到哪些模式?
【问题讨论】:
标签: ios regex nsstring markdown
正则表达式似乎与超链接的 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+("|')(.*?)("|'))?\),因为它是正则表达式引擎看到的)
【讨论】:
\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)
请参阅 ICU 用户指南Regular Expressions
当需要 \ 字符来转义正则表达式运算符时,它们本身必须在字符串中进行转义。
\\[ 匹配 [ ( 开始捕获组 1 .*?尽可能少地匹配任何 0 次或多次。 ) 结束捕获组 1 \\] 火柴 ] \\( 火柴 ( ( 开始捕获组 2 \\S+ 匹配所有非空格字符 ) 结束捕获组 2 ( 开始捕获组 3 \\s+ 匹配一个或多个空格字符 ( 开始捕获组 4 \"|\' 匹配 " 或 ' ) 结束捕获组 4 ( 开始捕获组 5 .*?尽可能少地匹配任何 0 次或多次 )) 结束捕获组 5 ( 开始捕获组 6 \"|\' 匹配 " 或 ' ) 结束捕获组 6 )?结束捕获组 3 的零个或一个匹配项 \\) 火柴 )【讨论】: