gpt4 book ai didi

正则表达式 (PCRE) : Match all digits conditional upon presence of a string

转载 作者:行者123 更新时间:2023-12-01 23:43:36 25 4
gpt4 key购买 nike

使用 PCRE,我只想捕获一行中的所有数字,但前提是特定字符串(例如“STRING99”)出现在该行的任何位置。

例如,考虑这两种情况:

a1 STRING99 2b c3d

a1 2b c3d

在第一种情况下,我希望结果为“19923”。在第二种情况下,我想要一个空结果。

我不确定这是可能的。它可能适用于可变长度的后视,但这在 PCRE 中不受支持。此外,像 (?=.*STRING99.*$)(\D|(\d))* 这样的东西会起作用,但是“重复捕获组只会捕获最后一次迭代”,这意味着第二个捕获组只捕获最后一位数字。我无法为此找到解决方法。

(这显然不难通过 2 个连续的 Regex 运算来实现,但我希望它在一个公式中。)

最佳答案

您可以在 preg_replace 中使用此 PCRE 正则表达式:

^(?!.*STRING99).*(*SKIP)|\D+

RegEx Demo

正则表达式详细信息:

  • ^:开始
  • (?!.*STRING99):Lokahead 检查输入中是否有 STRING99
  • .*(*SKIP):匹配输入的剩余部分直到结束并跳过
  • |:或者
  • \D+:匹配1+个非数字

PHP 代码:

$repl = preg_replace('~^(?!.*STRING99).*(*SKIP)|\D+~', '', $str);

关于正则表达式 (PCRE) : Match all digits conditional upon presence of a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64672379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com