【问题标题】:Regular Expression to extract a text with a variable length正则表达式提取具有可变长度的文本
【发布时间】:2018-06-24 16:24:53
【问题描述】:

我想编写一个正则表达式,它将返回一个模式的第一次出现,它可能具有可变长度,例如

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-”的第一次出现长度。

请帮忙。

【问题讨论】:

  • 什么语言或工具?正则表达式不是标准化的,所以如果你想在 python、bash 等中得到答案,它会有所不同......
  • 欢迎来到 Stack Overflow。这不是一个代码/SQL/正则表达式编写服务,您可以在其中发布您的要求和选择的语言列表,并且代码猴子会为您生成代码。我们非常乐意提供帮助,但我们希望您首先努力自己解决问题。完成后,您可以解释您遇到的问题,包括您工作的相关部分,并提出具体问题,我们会尽力提供帮助。祝你好运。
  • 这是用于 postgreSQL 的

标签: regex string substring text-extraction


【解决方案1】:

这是一种方式:^\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,})

【讨论】:

    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 2012-03-18
    • 2013-06-22
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多