草庐IT

pcre_stringpiece

全部标签

php - pcre.backtrack_limit 的 "unit"是什么?

我遇到一个问题,由于pcre.backtrack_limit,具有复杂正则表达式的preg_replace()会导致错误(PREG_BACKTRACK_LIMIT_ERROR)太低,默认设置为1,000,000。我将它设置为10,000,000,它适用于这个特定的应用程序。我的问题是,回溯限制松散定义的“单位”到底是什么?1,000,000数字是否对应于内存大小?如果不是,这意味着什么?我试图了解在我的环境中对此设置的合理设置。引用preg_replace:http://us3.php.net/manual/en/pcre.configuration.php#ini.pcre.back

php - 哪些字符与 PHP 的 PCRE 中的完全匹配?

manualpage对此保持沉默,尽管用户在其下方发表了评论,其中指出ASCII代码为0x09、0x0A、0x0C的字符,0x0D和0x20,即TAB、LF、FF、CR和SPACE,被识别为“空白”,但没有给出来源。如果PCRE与Perl兼容,显然,这可能不像thisPerldocumentation中解释的那么简单。.事实上,它可能受语言环境的影响,然后开始变得毛茸茸。上下文是我正在尝试替换用于检查纯空格字符串的preg_match调用。 最佳答案 根据PHPdocs:ThespacecharactersareHT(9),LF(1

php - 使用命名模式子例程的 PCRE 正则表达式

我正在试验PHP的PCRE中的命名子模式/“子例程”正则表达式功能,我希望有人可以解释以下奇怪的输出:$re="/(?(DEFINE)(?a))^(?&a)$/x";var_dump(preg_match($re,'a',$match));//(int)1asexpectedvar_dump($match);//Array([0]=>'a')我不明白为什么命名组“a”不在结果中(内容为“a”)。将preg_match更改为preg_match_all会将“a”和“1”放入匹配数据中,但两者都只包含一个空字符串。我真的很喜欢以这种方式编写正则表达式的想法,因为您可以使它们变得非常强大,同

javascript - Javascript 函数中的 PHP (PCRE) 验证

是否有一个现有函数(或者可能有人编写了一些现有代码)来在JS函数中验证传递的文本是有效的PCRE?我疯狂地谷歌搜索,但我能找到的最接近的东西只是“PCRE_JAVASCRIPT_COMPAT”(这是一个PCRE兼容性标志)或关于在PHP和Javascript中验证输入的讨论。我见过的最接近JavascriptREGEX验证的是:try{"".match(regex);returntrue;}catch(e){returnfalse;}这没有考虑JS(ECMA)正则表达式和PHP(PCRE)正则表达式之间的差异-这显然是一个问题,但我还没有找到关于两者之间差异的明确讨论。有什么帮助吗?

php - PHP PCRE 中的\x 是什么意思?

来自themanual:After\x,uptotwohexadecimaldigitsareread(letterscanbeinupperorlowercase).InUTF-8mode,\x{...}isallowed,wherethecontentsofthebracesisastringofhexadecimaldigits.ItisinterpretedasaUTF-8characterwhosecodenumberisthegivenhexadecimalnumber.Theoriginalhexadecimalescapesequence,\xhh,matchesatw

等同于 PCRE/etc 的 Java 正则表达式。简写 `\K` ?

PerlRegEx和PCRE(Perl-CompatibleRegEx)等有简写\K来丢弃它左边的所有匹配,除了捕获组,但Java不支持它,所以Java的等价物是什么? 最佳答案 没有直接的等价物。但是,您始终可以使用捕获组重写此类模式。如果你仔细看看\K运算符及其局限性,您将看到可以用捕获组替换此模式。参见rexegg.com\Kreference:Inthemiddleofapattern,\Ksays"resetthebeginningofthereportedmatchtothispoint".Anythingthatwas

c++ - 在 C/C++ 中存储 PCRE 编译的正则表达式

有没有一种有效的方法可以将编译后的正则表达式(通过regcomp()、PCRE编译)存储在二进制文件中,以便稍后我可以从文件中读取并调用regexec()?或者只是将编译后的regex_t结构转储到文件并在需要时读回它们? 最佳答案 除非你有super-complexregex,我几乎看不出序列化编译后的正则表达式有什么好处,编译时间应该不会那么长。除非你在一个超紧密的嵌入系统上?无论如何,确实倾倒结构可能是一个解决方案,至少你可以尝试...[编辑]我只是查看了我的源代码(6.7),正如我所担心的那样,它并不是那么简单,结构以voi

c++ - pcre2_substitute() 函数支持多少捕获组?

我在我的C++项目中使用pcre2_substitute()函数来执行正则表达式替换:intret=pcre2_substitute(re,/*Pointstothecompiledpattern*/subject,/*Pointstothesubjectstring*/subject_length,/*Lengthofthesubjectstring*/0,/*Offsetinthesubjectatwhichtostartmatching*/rplopts,/*Optionbits*/0,/*Pointstoamatchdatablock,orisNULL*/0,/*Pointst

c++ - 如何用 Unicode 处理 PCRE?

我正在使用VisualStudio2010通过PCRE进行一些正则表达式匹配。假设我在std::wstring中给出了一个模式和一个主题,如下所示:std::wstringsubject=L"サービス内容";std::wstringpattern=L"ス内";如您所见,我尝试定位日语字符串,因此我需要采用PCRE的unicode变体,例如具有函数pcre16_exec或pcre32_exec的pcre16或pcre32等不幸的是,它不起作用。我的问题似乎是从wstring到unsignedshort或unsignedint的转换(取决于pcre16或pcre32)。我尝试了很多函数(w

c++ - 将正则表达式编译成 native 程序集会比 PCRE 或其他正则表达式引擎更快吗?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我在考虑改进。我目前正在对日志文件进行大量文本处理。我并不是说PCRE是慢/快或与此相关的任何其他实现。我编写的语言主要是Perl。我知道它有一个强大的正则表达式引擎,我知道它比PCRE更具表现力。我想用C++制作一个小型正则表达式引擎,将正则表达式编译为原始nasm。我知道PCRE非常复杂,我的假设是我可以跳过PCRE在不必要的处理方面所做的很多事情。而