获取变量REGEX

时间:2017-06-06 13:51:30

标签: regex

我在数据库中有以下变量:PSC-CAMPO-GRANDE-I08-V00-C09-H09-IPRMKT我希望将其拆分为两个变量,第一个变量为PSC-CAMPO-GRANDE-I08,第二个变量为V00-C09-H09-IPRMKT

我正在尝试正则表达式.*(\-I).*(\-V),这不起作用。然后我尝试了.*(\-I),但它获得了最后一个-IPRMKT字符串。

然后我的问题是:考虑到第一次出现PSC-CAMPO-GRANDE-I08-V00-C09-H09-IPRMKT,有一种分割字符串-I的方法吗?

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

regex = "(.*?-I[\d]{2})-(.*)"

这是Python中的测试脚本

import re

regex = "(.*?-I[\d]{2})-(.*)"

match = re.search(regex, "PSC-CAMPO-GRANDE-I08-V00-C09-H09-IPRMKT")
if match:
    print ("yep")
    print (match.group(1))
    print (match.group(2))
else:
    print ("nope")

在正则表达式中,我抓住了第一个 - 然后是2个数字。然后匹配,但不要捕获 - 。然后捕获其余部分。如果您有更多的逻辑,我可以帮助调整它。

答案 1 :(得分:0)

您可以使用

^(.*?-I[^-]*)-(.*)

请参阅regex demo

<强>详情:

  • ^ - 字符串的开头
  • (.*?-I[^-]*) - 第1组:
    • .*? - 除了换行符之外的任何0 + 0+字符,直到第一个因为*?是一个与之匹配的惰性量词第一次出现
    • -I - 文字子串-I
    • [^-]* - 除连字符以外的任何0 +字符(您的模式错过了
  • - - 连字符
  • (.*) - 第2组:除了换行符之外的任何0 +字符,直到行尾。