我正在尝试提出一个正则表达式来从字符串中提取时间来构建应用程序.
这是我到目前为止所得到的.不知道我在这里做错了什么.
https://regex101.com/r/fC0lI5/1
我可以得到一些字符串但不是所有不同的变体.
([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
时间.
([01]?[0-9]+:?[0-9]*(?:[AP]M)?)-([01]?[0-9]+:?[0-9]*(?:[AP]M)?) ^^ ^^ ^^ ^^
只需使AM
组件可选.参见demo.Also make first part +
,否则它将匹配空字符串.
https://regex101.com/r/fC0lI5/2
任一捕获组中的AM/PM都不是可选的
([01]?[0-9]+:?[0-9]*(?:[AP]M)?)-([01]?[0-9]+:?[0-9]*(?:[AP]M)?)
我认为我的比其他人更有效,因为其他人会允许(他们已经修复了他们的)
8M-9M, which is not valid.