正则表达式匹配句子与特定模式

时间:2014-11-30 18:06:43

标签: regex

我想从一堆句子中提取某些句子。这些句子有一个特定的模式,但我的正则表达式在遇到和字母数字字符串时失败:见下面的示例测试字符串

"""Dear User,
Slow movt is at placeA ( Ohio | Missourri ) : placeB all d way to placeC is a no go area. wetin dey happen ooo. cc ( 2014-11-19 06:30 PM ) //passes my regex
Slow movt is at PlaceD ( Denver | Houston ) : .3 50pm. placeE&gt &gt ketu b2b //t.co/a7wmlxo6eu ( 2014-11-19 03:51 PM ).//fails my regex but passes if I remove alphanumerals
Average blah blah blah  (a|b) //t.co/a7nmloo6eu ( 2014-11-13 03:16 PM ).// passes my regex if no alphanumerals
yours sincerely 
TL"""

这是我在我的正则表达式中提出的:

((Slow|Average|Fast)\D+).(\(\s?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}\s[AP]M\s\)\.)

任何提供的帮助都非常感谢。请注意我需要提取所有匹配项,因此上述字符串的完美解决方案将产生3个匹配项,不包括匹配项中的"Hi User""Your sincerely TL"

2 个答案:

答案 0 :(得分:0)

\D+仅匹配非数字,因此在1pm上失败。

你能简单地匹配"任何"?

((Slow|Average|Fast).*)(\(\s?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}\s[AP]M\s\)\.)

测试live on regex101.com

答案 1 :(得分:0)

根据您当前声明的要求

((Slow|Average|Fast).+)(\(\s?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}\s[AP]M\s\)\.?)

确实有效:RegEx101

如果您有更多限制要求,请发表评论。