首页 > 解决方案 > 查找文本的正则表达式

问题描述

我想得到My Text Content紧随其后的那个AB.00.000

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

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

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

这是输入字符串:

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

标签: pythonregex

解决方案


找到模式后,您似乎想获得整行的其余部分。

您可以使用

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

请参阅正则表达式演示。请注意,这\b是一个单词边界,需要_在单词 char(或字符串的开头/结尾)之前或之后使用除字母/数字/之外的字符。这\s*(.*)是您的解决方案严重缺失的内容:

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

如果模式必须位于行首,则提取所需文本的正则表达式方式如下所示

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

查看另一个正则表达式演示(?m)(= re.Moption)^匹配一行的开始,而不仅仅是整个字符串的开始位置。

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)


推荐阅读