首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式:从数字中分离所有大写

正则表达式:从数字中分离所有大写
EN

Stack Overflow用户
提问于 2018-10-22 01:28:28
回答 3查看 67关注 0票数 0

我正在使用python regex来读取文档。

我在很多文档中都有下面这一行:

代码语言:javascript
复制
Dated: February 4, 2011 THE REAL COMPANY, INC

我可以使用python文本搜索来轻松地找到带有“日期”的行,但我想从文本中提取真正的公司,公司,而不是获得“2011年2月4日”文本。

我尝试过以下几种方法:

代码语言:javascript
复制
[A-Z\s]{3,}.*INC

我对这个正则表达式的理解是,它应该让我在LLP之前得到所有的大写字母和空格,但它却拉出了整个行。

这表明我从根本上忽略了正则表达式如何处理大写字母。有没有什么简单明了的解释我漏掉了?

EN

回答 3

Stack Overflow用户

发布于 2018-10-22 02:29:19

使用下面的代码:

代码语言:javascript
复制
>>> import re
>>> txt
'Dated: February 4, 2011 THE REAL COMPANY, INC'

>>> re.findall('([A-Z][A-Z]+)', txt)
['THE', 'REAL', 'COMPANY', 'INC']

另一种方法是@davedwards建议的:

代码语言:javascript
复制
>>> re.findall('[A-Z\s]{3,}.*', txt)
[' THE REAL COMPANY, INC']

说明:

A-Z\s{3,}.*匹配以下列表中存在的单个字符A-Z\s{3,} {3,}量词-匹配3到无限次,尽可能多,按需返回(贪婪) A-Z A-Z A(索引65)和Z(索引90) (区分大小写)范围内的单个字符\s匹配任何空白字符(等于\r\n\t\f\v )量词匹配任何字符(行终止符除外)* .* -匹配0到无限次,尽可能多次,根据需要返回(贪婪)量词

票数 0
EN

Stack Overflow用户

发布于 2018-10-22 03:43:24

你可以使用

代码语言:javascript
复制
^Dated:.*?\s([A-Z ,]{3,})

并利用第一个捕获组,请参见。

票数 0
EN

Stack Overflow用户

发布于 2018-10-22 20:59:38

您的正则表达式[A-Z\s]{3,}.*INC匹配大写字符或空白字符3次或更多次,然后是0+,再乘以任何字符,然后是将匹配的INC:THE REAL COMPANY, INC

您还可以做的是匹配日期:从字符串的开头开始,然后是类似日期的格式,然后捕获组中后面的内容。您的值将在第一个捕获组中:

^Dated:\s+\S+\s+\d{1,2},\s+\d{4}\s+(.*)$

说明

  • ^Dated:\s+匹配日期:依次为空格character
  • \S+\s+匹配日期为1+,空格为非空格字符,后跟1+为空格字符,在此case
  • \d{1,2},匹配中为2月1-2次digit
  • \s+\d{4}\s+匹配character
  • (.*)为空格字符(4位),然后为1+为空格character
  • (.*)组中的空格character
  • $捕获时间0+任何字符串的末尾

Regex demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52918006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档