【问题标题】:What will this regular expression detect?这个正则表达式会检测到什么?
【发布时间】:2014-10-09 18:22:05
【问题描述】:

我不是正则表达式字符串方面最伟大的专家,所以我不知道这个应该在这里找到什么:

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

我正在尝试为应用提供降价模式。谁能帮我找出应该找到哪些模式?

【问题讨论】:

    标签: ios regex nsstring markdown


    【解决方案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+("|')(.*?)("|'))?\),因为它是正则表达式引擎看到的)

    【讨论】:

      【解决方案2】:
      \\[(.*?)\\]\\((\\S+)(\\s+(\"|\')(.*?)(\"|\'))?\\) 

      请参阅 ICU 用户指南Regular Expressions

      当需要 \ 字符来转义正则表达式运算符时,它们本身必须在字符串中进行转义。

      \\[ 匹配 [ ( 开始捕获组 1 .*?尽可能少地匹配任何 0 次或多次。 ) 结束捕获组 1 \\] 火柴 ] \\( 火柴 ( ( 开始捕获组 2 \\S+ 匹配所有非空格字符 ) 结束捕获组 2 ( 开始捕获组 3 \\s+ 匹配一个或多个空格字符 ( 开始捕获组 4 \"|\' 匹配 " 或 ' ) 结束捕获组 4 ( 开始捕获组 5 .*?尽可能少地匹配任何 0 次或多次 )) 结束捕获组 5 ( 开始捕获组 6 \"|\' 匹配 " 或 ' ) 结束捕获组 6 )?结束捕获组 3 的零个或一个匹配项 \\) 火柴 )

      【讨论】:

        猜你喜欢
        • 2010-09-22
        • 1970-01-01
        • 2012-01-26
        • 2011-10-24
        • 1970-01-01
        • 1970-01-01
        • 2013-04-19
        • 1970-01-01
        相关资源
        最近更新 更多