正则表达式,如何在12/24小时的时间戳中删除除冒号之外的所有非字母数字?

rfa*_*ams 4 python regex

我有一个字符串:

Today, 3:30pm - Group Meeting to discuss "big idea"
Run Code Online (Sandbox Code Playgroud)

你如何构造一个正则表达式,以便解析后它将返回:

Today 3:30pm Group Meeting to discuss big idea
Run Code Online (Sandbox Code Playgroud)

我希望删除除12或24小时时间戳中出现的所有非字母数字字符.

Abe*_*bel 8

# this: D:DD, DD:DDam/pm 12/24 hr
re = r':(?=..(?<!\d:\d\d))|[^a-zA-Z0-9 ](?<!:)'
Run Code Online (Sandbox Code Playgroud)

冒号前面必须至少有一个数字,后跟至少两位数:然后才是时间.所有其他冒号将被视为文本冒号.

这个怎么运作

:              // match a colon
(?=..          // match but not capture two chars
  (?<!         // start a negative look-behind group (if it matches, the whole fails)
    \d:\d\d    // time stamp
  )            // end neg. look behind
)              // end non-capture two chars
|              // or
[^a-zA-Z0-9 ]  // match anything not digits or letters
(?<!:)         // that isn't a colon
Run Code Online (Sandbox Code Playgroud)

然后应用于这个愚蠢的文字:

Today, 3:30pm - Group 1,2,3 Meeting to di4sc::uss3: 2:3:4 "big idea" on 03:33pm or 16:47 is also good
Run Code Online (Sandbox Code Playgroud)

......将其改为:

Today, 3:30pm  Group 123 Meeting to di4scuss3 234 big idea on 03:33pm or 16:47 is also good
Run Code Online (Sandbox Code Playgroud)