首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的正则表达式从字符串中提取时间有什么问题?

我的正则表达式从字符串中提取时间有什么问题?
EN

Stack Overflow用户
提问于 2015-12-22 19:11:05
回答 3查看 410关注 0票数 1

我正试图想出一个正则表达式,从字符串中提取时间来构建应用程序。

这是我到目前为止所得到的。不知道我在这里做错了什么。

https://regex101.com/r/fC0lI5/1

我可以得到一些字符串,但不是所有不同的变化。

代码语言:javascript
运行
复制
([01]?[0-9]*:?[0-9]*[AP]M?)-([01]?[0-9]*:?[0-9]*[AP]M?)


8-8:30AM MON TUES THURS FRI
8-10:30AM MON TUES THURS FRI
8:30AM-10:30AM MON TUES THURS FRI
10:30AM-11:30AM MON TUES THURS FRI
10:30AM-11:30AM MON TUES THURS FRI
8AM-8:30AM
10-11PM

我想要的是两个被俘获的小组。所以我知道第一组是FROM时间,后一组是TO时间。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-22 19:13:53

代码语言:javascript
运行
复制
([01]?[0-9]+:?[0-9]*(?:[AP]M)?)-([01]?[0-9]+:?[0-9]*(?:[AP]M)?)
           ^^               ^^            ^^                 ^^

只需使AM组件optional.See demo.Also进行第一部分+,否则它将匹配空字符串。

https://regex101.com/r/fC0lI5/2

票数 5
EN

Stack Overflow用户

发布于 2015-12-22 19:14:55

这两个捕获组中的AM/PM都不是可选的。

代码语言:javascript
运行
复制
([01]?[0-9]+:?[0-9]*(?:[AP]M)?)-([01]?[0-9]+:?[0-9]*(?:[AP]M)?)

我认为我的比其他人更有效,因为其他人会允许(他们已经修好了他们的)

代码语言:javascript
运行
复制
8M-9M, which is not valid.
票数 5
EN

Stack Overflow用户

发布于 2015-12-22 19:26:54

正如其他答复所指出的,A和P不是可选的。此外,正则表达式将匹配其他字符串(如":A-:A“或"98387899A-A")。

这是可行的,而且会更加严格,因为你的:

代码语言:javascript
运行
复制
((?:[01]?[0-9]:)?[0-9]{1,2}(?:AM|PM)?)-((?:[01]?[0-9]:)?[0-9]{1,2}(?:AM|PM)?)

有关regex语法的完整描述,请参见Python手册

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

https://stackoverflow.com/questions/34422842

复制
相关文章

相似问题

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