gpt4 book ai didi

javascript - 正则表达式 |将单词与冒号匹配,但忽略类似时间的模式

转载 作者:行者123 更新时间:2023-11-30 09:21:06 24 4
gpt4 key购买 nike

为了构建更好、更智能的 PDO 语句的特殊函数,我匹配并提取了以冒号开头的每个单词。

PHP 类似 Needle:/:\w+/

但有时我也必须处理用冒号分隔的数字的字符串。 (时间值)

  • 2018-05-21T00:00:00+02:00
  • 00:00:00
  • 00:00

我试图排除它们,但当我尝试为此扩展我的正则表达式针时从未成功。由于这个问题,我经常解决这个问题。但现在我想修复并了解如何解决这个问题。

情况听起来很简单

  1. 查找以冒号开头的每个单词。
  2. 删除冒号前有数字的所有匹配项。

因此从当前结果来看 :\w+:

:light at 07:15:0000

我只想匹配:

:light at 07:15:0000

最佳答案

如果:之后的那些子字符串不能以数字开头,您可以使用

:[A-Za-z_]\w*

请参阅regex demo .

这里,

  • : - 冒号
  • [A-Za-z_] - 一封信或 _ (如果第一个字符只能是字母,则删除 _)
  • \w* - 0+ 个字母、数字或/和 _

替代方案

您还可以匹配那些类似时间的字符串,并匹配并捕获:\w+ :

\d+:\d+(?::\d+)?|(:\w+)

请参阅regex demo 。仅当组 1 匹配时才获取组 1 值。

在 PHP 中,您可以通过 SKIP-FAIL 实现您所需要的功能。正则表达式:

'~\d+:\d+(?::\d+)?(*SKIP)(*F)|:\w+~'

参见another demo .

(*SKIP)(*F) ,您可以在匹配其余选项的同时匹配和跳过匹配项。

关于javascript - 正则表达式 |将单词与冒号匹配,但忽略类似时间的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51594153/

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