相关疑难解决方法(0)

慢速正则表达性能

下面的代码包含一个用于提取C#字符串文字的正则表达式,但是对于多个字符的输入字符串,正则表达式匹配的性能很糟糕.

class Program
{
   private static void StringMatch(string s)
    {
        // regex: quote, zero-or-more-(zero-or-more-non-backslash-quote, optional-backslash-anychar), quote
        Match m = Regex.Match(s, "\"(([^\\\\\"]*)(\\\\.)?)*\"");
        if (m.Success)
            Trace.WriteLine(m.Value);
        else
            Trace.WriteLine("no match");
    }

    public static void Main()
    {
        // this first string is unterminated (so the match fails), but it returns instantly
        StringMatch("\"OK");

        // this string is terminated (the match succeeds)
        StringMatch("\"This is a longer terminated string - it matches and returns instantly\"");

        // this string is unterminated (so the match will fail), but it …
Run Code Online (Sandbox Code Playgroud)

c# regex performance

10
推荐指数
1
解决办法
9416
查看次数

为什么这个 preg_replace 调用返回 NULL?

为什么这个调用返回NULL?正则表达式错误吗?对于test输入,它不会返回 NULL。文档说 NULL 表示错误,但它可能是什么错误?

$s = hex2bin('5b5d202073205b0d0a0d0a0d0a0d0a20202020202020203a');
// $s = 'test';
$s = preg_replace('/\[\](\s|.)*\]/s', '', $s);
var_dump($s);

// PHP 7.2.10-1+0~20181001133118.7+stretch~1.gbpb6e829 (cli) (built: Oct  1 2018 13:31:18) ( NTS )
Run Code Online (Sandbox Code Playgroud)

php regex pcre

1
推荐指数
1
解决办法
1151
查看次数

标签 统计

regex ×2

c# ×1

pcre ×1

performance ×1

php ×1