【问题标题】:T-sql PATINDEX with regex带有正则表达式的 T-sql PATINDEX
【发布时间】:2022-08-03 14:34:46
【问题描述】:

你能帮我解决这个问题吗?

我有一个字符串:

ECTB-3_ABC1192103_8G1D

我想得到这个:

ABC1192103_8

我用这种模式尝试了 patindex 来获取字符串的起始位置:

[a-zA-Z]{3}[0-9]+/[0-9]+


PATINDEX( \'%[a-zA-Z]{3}[0-9]+/[0-9]+%\', \'ECTB-3_ABC1192103_8G1D\')

但它返回 0。

  • 使用您显示的示例和尝试,请尝试正则表达式:^[a-zA-Z]+-[0-9]_([[:alnum:]]+_[0-9])[0-9a-zA-Z]+$ 它的在线演示是:regex101.com/r/WdIQhP/1

标签: sql-server regex tsql patindex


【解决方案1】:

使用您显示的示例和尝试,请尝试正则表达式。这将创建 1 个捕获组,其中包含预期值。

^[a-zA-Z]+-[0-9]_([[:alnum:]]+_[0-9])[0-9a-zA-Z]+$

这是上述正则表达式的Online demo

【讨论】:

  • 它也不起作用:/
  • @F.Gergo,好的,尝试将其更改为:^[a-zA-Z]+-[0-9]_([[:0-9a-zA-Z:]]+_[0-9])[0-9a-zA-Z]+$ 一次并试一试。
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多