我在数据库中有以下变量: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
的方法吗?
答案 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 +字符,直到行尾。