gpt4 book ai didi

php - MySQL正则表达式按顺序匹配包含某些字段的多个CSV行

转载 作者:行者123 更新时间:2023-11-28 23:39:22 32 4
gpt4 key购买 nike

我想使用 MySQL 的 REGEXP 来匹配 MySQL 查询中 csv 的多个数字。

我正在尝试确定 CSV 字符串是否包含数字 2 和 9。结果中的顺序很重要。他们可以背靠背,并出现在开始和/或结束时。

下面的 CSV 字符串应该都产生肯定的结果:

1,2,3,4,5,6,7,8,9,10
2,9,1,2,3,4,5,10
1,2,3,5,9

这些 CSV 字符串不应:

9,2,3,4,5,10 - (2 doesn't exist before 9)
2,1,2,3,4,5,10 - (9 not present)

我试图通过以下逻辑匹配我在模式中的期望:

  1. 匹配任何东西或什么都不匹配
  2. 至少匹配一次数字 2
  3. 匹配任何东西或什么都不匹配
  4. 至少匹配一次数字 9
  5. 匹配任何东西或什么都不匹配

我的表达很接近,但不起作用是:

REGEXP '.*([^0-9][2][^0-9])+.*([^0-9][9][^0-9])+.*'

如果 2 是字符串的开头或 9 是字符串的结尾,则上述表达式无法匹配。感谢您的输入。

最佳答案

这个怎么样?

(^|(.*\D))2\D(.*[\D]){0,1}9($|\D.*)

查看此 RegEx-Demo 中的单元测试

  • (^|(.*\D)) - 字符串的开头或不以 0-9 结尾的内容。
  • 2 - 我们首先需要一个 2!
  • \D(.*[\D]){0,1} 匹配“,”(像 2,9 一样紧接 2 和 9 需要)或“,... ,,”
  • 9 - 我们需要 2 之后的 9。
  • ($|\D.*) - 单词结尾或不以 0-9 开头的内容

关于php - MySQL正则表达式按顺序匹配包含某些字段的多个CSV行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34835930/

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