这个正则表达式会检测什么?

时间:2014-10-09 18:22:06

标签: ios regex nsstring markdown

我不是Regex字符串中最伟大的专家,所以我迷失了这个应该在这里找到的东西:

@"\\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\)"

我正试图为应用程序获得降价模式。任何人都可以帮我找到应该找到的模式集吗?

2 个答案:

答案 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 )