问题标签 [regex-look-ahead]

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 投票
1 回答
84 浏览

regex - 如何将前瞻正则表达式拆分为 2 个普通正则表达式?

我有一个前瞻正则表达式[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])。在我的测试中,它从中提取 4 个子字符串@@||imasdk.googleapis.com/js/core/bridge*.html

  • |imasdk
  • .googleapis
  • .com
  • /core

我需要用 2 个旧的正则表达式重写它,因为我不能使用前瞻(正则表达式引擎不支持)。我已将其拆分为[^a-z0-9%*][a-z0-9%]{3,}and[^a-z0-9%*]并在匹配后检查子字符串中的每个第一个正则表达式匹配。

出于某种原因,它也提取 /bridge.未列出[^a-z0-9%*]并在之后找到的/bridge。那么前瞻是如何工作的:它必须是完全匹配、substr(find结果)还是其他任何东西?这是否意味着在这种情况下,每个结尾字符都不应来自集合a-z0-9%*

在 Rust 中,代码如下所示:

测试输出:

^ 这里你可以看到/bridge是由于跟随.而发现的,它是不正确的

0 投票
0 回答
30 浏览

javascript - 带有 highlight-text-inside-a-textarea 和 JS RegExp 的半高亮关键字

我正在使用 highlight-text-inside-a-textarea 插件https://codersblock.com/blog/highlight-text-inside-a-textarea/工作正常,但我对重音词有疑问。例如,这是我要突出显示的关键字数组,$kw = array("excel","Réseau","R","electrom");但正如您所见,关键字“electromécanique”正在突出显示一半。我怎样才能避免这种情况?这可能与正则表达式有关。

在此处输入图像描述

0 投票
1 回答
89 浏览

javascript - 正则表达式匹配以破折号分隔的单词或仅匹配单个单词

因此,对此的要求是匹配人的姓氏,每个姓氏之间用破折号分隔。

我为此使用的基本 RegEx 是这个:

基本上我将其限制为拉丁字母字符,包括一些重音字符。

如果我使用以下示例,这将非常有效:

  • 佩雷斯-冈萨雷斯
  • 多明格斯-迪亚兹
  • 居梅斯-马丁内斯

但是我忘了考虑这个人只有一个姓氏的情况。

我尝试执行以下操作。

\ 在第一个匹配选项的允许字符中添加了一个或空格。我为没有空格的单个单词添加了 or 条件。

虽然它适用于某些情况,但有两个问题。

  1. 对于这样的用例,我认为这不是最佳的 RegEx。
  2. 我偶然发现了姓氏复杂的人的具体案例。

关于第2点,我指的是:

  • 约翰逊-德索萨

RegEx 匹配它,但它不再将破折号视为分隔符。

我不确定如何处理。

此外,由于我添加了空格,它不再尊重单词之间的破折号的要求。

我在想可能是限制名称之间的空格数,例如在姓氏之间最多允许 2 或 3 个空格,例如:

  • Pérez-De la Cruz - 这适用于我的 RegEx
  • Pérez De la Cruz-González - 这不是

可以是有效匹配。

我不是 RegEx 的专业人士,因此我们将不胜感激。

更新

我确实没有提到我需要能够将它与 JavaScript 一起使用。PHP 也可能有用,但我正在做一些浏览器验证,并且模式需要兼容。

0 投票
1 回答
24 浏览

regex - 正则表达式匹配字符串的第一部分(直到第一次出现的空格字符),如果它不包含序列 ;host=

我有这个字符串cpu.usage_system;cpu=cpu-total;host=host1 6.94024205748818 1626401140(带有标签支持的石墨度量消息)。

我正在尝试匹配字符串的第一部分,直到第一次出现空格字符......但前提是字符串的第一部分不包含;host=.

我可以匹配所有字符,直到第一次出现空格^([\S]+)。我觉得我应该使用负前瞻来检查是否存在,;host=但我不知道如何将它们放在一起。

这个想法是匹配度量标签的第一部分(&标签),看看是否包含主机标签,如果它确实包含主机标签......别管它。如果它不包含主机标签,请附加一个。

0 投票
1 回答
37 浏览

regex - 仅当 n 行之前的另一个字符串在任何支持 PCRE 的文本编辑器中匹配时,正则表达式匹配 n 行之后的字符串

我有一个 PHP 数据库配置文件(在支持 PCRE 的代码编辑器中打开),其中包含用于生成连接字符串的各种引擎凭据。

现在正如我在问题标题中提到的那样,我想匹配某个字符串“DB_DATABASE”,前提是在 n 行(比如说 3)之前存在 'mysql',如下所示:

如果我在 3 行之前说它不应该匹配 4 行之前的“mysql”,即它不应该匹配'mysql' => [。请注意,除了此处提到的之外,还有其他 DB 引擎连接详细信息,因此需要匹配 mysql 并且仅当它恰好出现在上面 3 行时DB_DATABASE

我尝试了一些复杂的正则表达式,但没有一个能给我想要的,让我提一个我认为至少接近但徒劳的:

感谢任何努力帮助解决此问题的人...

0 投票
2 回答
149 浏览

python - 在python中结合正负前瞻

我正在尝试提取满足许多条件的令牌,我正在使用前瞻来实现以下两个条件:

  1. 标记必须是数字/字母数字(即,它们必须至少有一个数字)。它们可以包含一些特殊字符,例如 -'-','/','\','.','_'等,

我想匹配像这样的字符串:165271,,,,agya678yah@123kj*12-

  1. 标记不能有连续的特殊字符,例如:ajh12-&

我不想匹配像这样的字符串:ajh12-&,671%&i^

我对第一个条件使用积极的前瞻:(?=\w*\d\w*)对第二个条件使用消极的前瞻:(?!=[\_\.\:\;\-\\\/\@\+]{2})

我不确定如何结合这两个前瞻条件。

任何的意见都将会有帮助。提前致谢。

编辑 1

我也想提取作为较大字符串一部分的完整标记(即,它们可能存在于字符串中间)。

我想匹配字符串中的所有标记: 165271 agya678 yah@123 kj*12-

并且字符串中没有任何标记(甚至不是标记的一部分):ajh12-& 671%&i^

为了强制正则表达式考虑整个字符串,我也在\b上述正则表达式中使用了:(?=\b\w*\d\w*\b)(?!=\b[\_\.\:\;\-\\\/\@\+]{2}\b)

0 投票
1 回答
27 浏览

regex - 我需要使用正则表达式从以下阶段获取金额值

  1. 这里有一些文字
  2. 这里有一些文字
  3. 金额:#4,227,361,94#
  4. 这里有一些文字
  5. 这里有一些文字
  6. 金额:#227,361,94#
0 投票
1 回答
45 浏览

php - PHP preg_split() 如果它不是数字、+ 号、括号、换行符或制表符

我有以下操作,只要遇到字母就会拆分字符串:

我想以这样一种方式扩展它,只要遇到的变量不是数字、括号、加号、连字符、换行符或制表符,它就会拆分字符串。

我写了一个可以匹配上面的正则表达式:

但我需要否定它,以便在被比较的值不是它时匹配。非常感谢我能得到的任何及时帮助。

谢谢你。

0 投票
1 回答
35 浏览

regex - 正则表达式:不允许标签内打开标签的负前瞻

我正在寻找一个不允许在标签内打开标签的负前瞻,我尝试

失败的负​​前瞻#1

看例子

失败的负​​前瞻#2

看例子

在此示例中,它们曾经包含:

  • x < y 除以 4
  • 无限的
  • 平等的
  • 概括
0 投票
1 回答
24 浏览

regex - 在 Active Directory 规范路径之后搜索组名的正则表达式

正则表达式的新手,而不是编码员。我在 OKTA SSO 应用程序中使用了一个组过滤器,该应用程序使用正则表达式进行过滤。以下过滤器适用于没有完整规范路径的组,但它找不到规范名称格式的组。我只想在路径后搜索组名。

  • 示例:“(?i)^aws_\S+_(?{{role}}[\w-]+)_(?{{accountid}}\d+)$”
  • 会发现这个:“AWS_Alias_AdministratorAccess_000000”
  • 但它不会找到这个:“llc.domainname.loc/IT/Security Groups/AWS_Alias_AdministratorAccess_12345678”

OKTA 文档: https ://saml-doc.okta.com/SAML_Docs/How-to-Configure-SAML-2.0-for-Amazon-Web-Service.html#setup-step3