在第二个分号之后和第一个连字符之前解析字符串的正则表达式

Regular expression to parse a string after second semi colon and before first hyphen

我正在 Google Spanner 上的 SQL 中编写正则表达式。以下是场景:

我有一个字符串 ABC : DEP : 050-G&H Sample - IJ,我想从中解析 50

同样,如果我有一个字符串 ABC : DEP : PQ-Word1 Word2 Word3,我想从中解析 PQ

我采用了两种方法来解决这个问题:

方法一

我为它写了一个正则表达式:([^:]*)-。这将按以下方式解析上述两个示例:

ABC : DEP : 050-G&H Sample - IJ - : 050-G&H Sample -

ABC : DEP : PQ-Word1 Word2 Word3 - : PQ-

方法二

我写的是:( )?([a-z]|[A-Z]|[0-9])*-,但是括号里的space在Google Spanner里被忽略了,报错了。

我想使用第一种方法来实现。请提供一些建议。

您可以使用

: *0*([^-:]+)-

regex demo

详情

  • : - 冒号
  • * - 0 个或更多空格
  • 0* - 零个或多个 0 个字符
  • ([^-:]+) - 捕获第 1 组:除 -: 之外的一个或多个字符(仅匹配字母数字字符,替换为 ([a-zA-Z0-9]+)
  • - - 一个连字符