目前正则表达式是:
[A-Z]+(?=-\d+$)
这将为遵循以下格式的大多数字符串提取正确的值:
ANG-RGN-SOR-BCP-0004 i.e. BCP
但是,它会提取SS
以下文档而不是PMR
:
ANG-B31-OPS-PMR-MACE-SS-0229
所以基本上我想去掉第四个词(在连字符之间),所以它应该选择BCP
and PMR
。
目前正则表达式是:
[A-Z]+(?=-\d+$)
这将为遵循以下格式的大多数字符串提取正确的值:
ANG-RGN-SOR-BCP-0004 i.e. BCP
但是,它会提取SS
以下文档而不是PMR
:
ANG-B31-OPS-PMR-MACE-SS-0229
所以基本上我想去掉第四个词(在连字符之间),所以它应该选择BCP
and PMR
。
以下正则表达式将获得第 1 组中的第 4 项:
(?:[A-Z0-9]+-){3}([A-Z0-9]+)
(?:...)
是“非捕获组”,它的作用类似于一个组,但不会出现在反向引用列表中。我在这里假设所有组仅包含大写字母和数字,您应该修改其中的部分[square brackets]
以表示这些组可能是什么。
Python中更容易理解的方法:
a = "ANG-B31-OPS-PMR-MACE-SS-0229"
part = a.split('-')[3]
print part
这给出了“PMR”。