问题标签 [pcre2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
111 浏览

c++ - 如何从可能重复的捕获组中检索捕获的子字符串?

很抱歉,我的英语很差,很难表达这个问题。所以,我们直接上一个简单的例子。

假设我们有一个主题字符串"apple:banana:cherry:durian"。我们要匹配主语,并分别拥有$1$2$3和、、和。我使用的模式是, 并且会如预期的那样。但是,将代替.$4"apple""banana""cherry""durian"^(\w+)(?::(.*?))*$$1"apple"$2"durian""banana"

因为要匹配的主题字符串不需要是 4 项,例如可以是"one:two:three", and$1$2will be "one"and "three"。同样,缺少中间项目。

在这种情况下使用的正确模式是什么?顺便说一句,我将在 C++ 代码中使用 PCRE2,所以没有splitPerl 内置函数。谢谢。

0 投票
0 回答
35 浏览

windows - windows + pcre2中的gcc怎么办?

大家好,我尝试在 Windows 中的 GCC 中添加 PCRE2,但对我来说非常糟糕,请解释我的步骤,在 Windows 中我已经安装了 MSYS2_64bit,就像在本教程中https://www.youtube.com/watch?v=jfVqzNU3gPg一样,在我下载一个 PCRE2 并将其解压缩到 C: 并创建新文件夹调用 build (c:/pcre2/pcre2-10.39/build) 后,安装 cmake 工具后,我运行它选择一个源 (c:/pcre2/pcre2 -10.39) ,选择构建 (c:/pcre2/pcre2-10.39/build)dir ,选择 MSYS makefile 并生成,之后我通过 MSYS shell 进入构建文件夹并运行命令 Make ,但返回

0 投票
0 回答
35 浏览

regex - 如何修改 PCRE2 中的工作正则表达式但在 Ruby 中失败(无效的条件模式)

我有这个正则表达式:

https://regex101.com/r/NiMbut/1

验证遵循以下规则的输入字符串:

  1. 需要前缀词(全部大写,可选最后一个字符!);
  2. 需要“说明在此处”;
  3. 括号中的可选值。

如果字符串不遵循正确的语法,则正则表达式必须失败。如果有可选值,描述子匹配必须删除描述后的尾随空格)。可选值子匹配没有括号。

它在 PCRE2 php 中完美运行,但在 Ruby 中失败,但我知道为什么。

0 投票
2 回答
53 浏览

php - 正则表达式 - 递归 - 具有多个结尾的嵌套匹配

这是我关于 stackoverflow 的第一个问题,所以请在这里与我交谈。另外,我不是以英语为母语的人。

(16.02.2022) 答案https://regex101.com/r/4FRznK/1来自对答案的评论)。特别感谢 Casimir et Hippolyte 的帮助!我希望我能联系到你。

(15.02.2022)更新: 我摆弄了下面介绍的解决方案,并且已经走得更远了。似乎字符串长度有一个限制,以便在没有任何灾难性回溯的情况下轻松匹配。

我更新了我的 Regex101 以显示最近的进展。也许你们中的一个人对如何解决这个问题有一个想法。https://regex101.com/r/wYzA3e/4

旁注: 我确实有一个工作功能,但我的目标是在优化和可靠性方面找到更快的解决方案。我当前的功能(在我看来)需要很长时间才能完成任务,并且非常依赖 strpos 来让我到达那里。如果有使用 PHP 内部函数的更便宜(在性能方面)的解决方案,我实际上并不想使用第三方函数。因此,即使您建议我使用替代方法,也请善待并提供您明确表示这些含义的提示。谢谢!

(14.02.2022)原文: 我的正则表达式遇到以下困难:这是字符串(“true”和/或“false”实际上不在字符串中,但有助于简化):

我标记了想要的匹配(**) 和我得到的匹配 ( *)

在这种情况下,我只想匹配最外层的父 [if XXXX].([else]|[elseif XXX]|[/if]) 语句与其相应的结尾,可以是 [else]、[elseif XXX] 或[/如果]。现在我不关心内部 [if XXX],因为当父母为假时,我不需要检查它们。

运行我的正则表达式时:

它匹配父母 [if XXX] 和其中任何 [elseif XX]、[else]、[/if] 的不连贯组合。

作为组,我确实需要匹配 > 每 X [if XXX] > [if XXX] 和匹配的 [END] 以及 [END] 之间的内容。

由于我不完全理解递归,我很感激你的帮助。提前谢谢了!

您可以在这里尝试正则表达式(更新): https ://regex101.com/r/wYzA3e/4

0 投票
2 回答
48 浏览

git - 如何在 Mac 上用 PCRE 编译 git?

我需要这个命令的 PCRE -git log -i -P --all --grep='^(?=.*fix)(?=.*a)(?=.*bug)'

它显示 - 致命:未使用 USE_LIBPCRE 编译时无法使用与 Perl 兼容的正则表达式

我试过了 -

brew config 的输出是

还遵循了这个问题的步骤 - How to install Git with PCRE support on macOS with Homebrew?