正则表达式只捕获CT之前的项目

时间:2018-02-14 20:20:32

标签: python regex

输入

 C1 C2 C3 C4, C1 C2 C3 C4....

必需输出:

QT620.116T.00.01.0109.PX00.101920130742

我的尝试(见here

QT620.116T.00.01.0109

2 个答案:

答案 0 :(得分:1)

在所需的匹配后使用正向前瞻以匹配.PX

^.*?(?=\.PX)
  • ^.*?非贪婪地匹配.PX(?=\.PX)

  • 后面的所有内容
  • (?=\.PX) 零宽度正向前瞻,因此不会被计为输出,只能确保之后存在.PX

示例:

In [55]: str_ = 'QT620.116T.00.01.0109.PX00.101920130742'

In [56]: re.search(r'^.*?(?=\.PX)', str_).group()
Out[56]: 'QT620.116T.00.01.0109'

答案 1 :(得分:1)

使用较新的regex模块,您可以使用前瞻来分割:

import regex as re

string = "QT620.116T.00.01.0109.PX00.101920130742"

(interesting, _) = re.split(r'(?V1)(?=\.PX\d+)', string)
print(interesting)

哪个收益

QT620.116T.00.01.0109

通过(?V1)启用较新的行为。