用于查找文本的正则表达式

时间:2019-07-04 08:15:22

标签: python regex

我想获得紧跟My Text Content之后的AB.00.000

我可以使用下面的正则表达式来获得这个AB.00.000

([A-Z]{2,3}\.[0-9]{2}\.[0-9]{3})

如何在Python中获取AB.00.000旁边的文本?

这是输入字符串:

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard 

AB.00.000 My Text Content

$!#"!

23:50

My Phone

1 个答案:

答案 0 :(得分:1)

似乎您希望在找到样式后获得整行的内容。

您可以使用

r'\b[A-Z]{2,3}\.[0-9]{2}\.[0-9]{3}\b\s*(.*)'

请参见regex demo。请注意,\b是一个单词边界,要求在单词char(或字符串的开头/结尾)之前或之后的字母/数字/ _以外的其他字符。 \s*(.*)是您的解决方案严重缺失的地方:

  • \s*-超过0个空格
  • (.*)-捕获组#1:除换行符以外的任何0个或更多字符,应尽可能多,即行的其余部分。

如果模式必须位于行的开头,则用于提取所需文本的正则表达式将看起来像

r'(?m)^[A-Z]{2,3}\.[0-9]{2}\.[0-9]{3}\b\s*(.*)'

请参见another regex demo(?m)(= re.M选项)使^匹配行的开头,而不仅仅是整个字符串的开头,位置。

Python:

m = re.search(r'\b[A-Z]{2,3}\.[0-9]{2}\.[0-9]{3}\b\s*(.*)')
if m:
    print(m.group(1))

请注意,要访问比赛的第一个(也是此处唯一的)括号部分,您需要通过.group(1)访问比赛组。