正则表达式提取长度可变

时间:2018-01-16 02:09:57

标签: regex string substring text-extraction

我想写一个正则表达式,它将返回第一次出现的模式,可能有一个可变长度,对于前

1J-AB-AO08-F-15 ==> AB

1P-ABCD-AO08-F-15 ==> ABCD

1L-KK-KKK-F-1000 ==> KK

1M-L-AO08L-F-15 ==> L

我参考了一些在线文章和示例,但找不到与上述模式匹配的解决方案,基本上我想提取第一次出现的" -some text - "在一个字符串中,文字"可能"长度可变。

请帮忙。

1 个答案:

答案 0 :(得分:0)

这是一种方式:^\w{1,}-(\w{1,})

SELECT (regexp_matches('1J-AC-AO08-F-15', '^\w{1,}-(\w{1,})'));
SELECT (regexp_matches('1P-ABCD-AO08-F-15', '^\w{1,}-(\w{1,})'));
SELECT (regexp_matches('1L-KK-KKK-F-1000', '^\w{1,}-(\w{1,})'));
SELECT (regexp_matches('1L-BBM-KKK-F-1000', '^\w{1,}-(\w{1,})'));
SELECT (regexp_matches('1L-LL-KKK-F-1000', '^\w{1,}-(\w{1,})'));

结果:

AC
ABCD
KK
BBM
LL

如果您知道字符串的第一部分是固定长度(1J-,您可以使用:^\w{2}-(\w{1,})