none
怎么使用正则把由特定前缀字符串和特定后缀字符串以及包含的内容一起提取出来? RRS feed

  • 问题

  • 有两个字符串参数,分别为前缀和后缀,用于正则提取,匹配由输入的前后缀字符串包含的内容以及前后缀字符串,被前后缀包含的内容里面可能有特殊符号,换行符等,不考虑嵌套的可能。

    例如上述图片,匹配由前缀字符串 #{{ 和后缀字符串}}#包含的里面的所有内容,包括#{{和}}#,里面的内容可能存在换行,特殊符号等。

    提出后的内容模板是#{{里面的内容}}# 。

    我用了[#{{]{3}(.*?)[}}#]{3} 这个正则表达式,但是有换行符\n或存在换行的字符串就不能匹配



    • 已编辑 Trian555 2019年7月31日 3:06
    2019年7月31日 2:56

答案

  • Hi Trian555,

    你可以用下面的代码去获得你想要的字符串。

         string pattern = @"#{{[\s\S]*?}}#";
                string s = "111#{{test1\ntest1}}#1111";
                foreach (Match match in Regex.Matches(s, pattern))
                {
                    Console.WriteLine(match.Value);
                }

    Result:

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Trian555 2019年8月2日 6:37
    2019年7月31日 6:28
    版主

全部回复

  • 如果是HTML的话

    用HtmlAgilityPack更快一些

    使用方式也很简答

    Nuget地址

    https://www.nuget.org/packages/HtmlAgilityPack/

    参考博客

    https://www.cnblogs.com/GmrBrian/p/6201237.html

    如果非要正则,你能将字符串打上来吗?

    给个图片完全没有心情去一个一个打字

    • 已编辑 ARM830 2019年7月31日 5:55
    2019年7月31日 5:52
  • Hi Trian555,

    你可以用下面的代码去获得你想要的字符串。

         string pattern = @"#{{[\s\S]*?}}#";
                string s = "111#{{test1\ntest1}}#1111";
                foreach (Match match in Regex.Matches(s, pattern))
                {
                    Console.WriteLine(match.Value);
                }

    Result:

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Trian555 2019年8月2日 6:37
    2019年7月31日 6:28
    版主