如何用Python正则表达式从字符串中提取位置与时间戳?
从预订文本提取位置和时间的Python正则方案
嘿,刚入门Python完全不用慌!针对你提出的提取需求,咱们可以用精准的正则表达式一次性搞定两个子串的提取,直接看方案就行:
核心代码示例
import re # 示例输入文本 booking_text = "Your booking at Crown Street - June 29th, 1:00pm" # 匹配规则:用捕获组锁定位置和时间 pattern = r"Your booking at (.*?) - (.*)" # 执行匹配 match_result = re.match(pattern, booking_text) if match_result: # 提取第一个捕获组的位置内容 location = match_result.group(1) # 提取第二个捕获组的时间戳内容 timestamp = match_result.group(2) print(f"提取到的位置: {location}") # 输出:Crown Street print(f"提取到的时间戳: {timestamp}") # 输出:June 29th, 1:00pm
正则规则解释
我特意写了最贴合你需求的规则,每部分都严格对应你的边界要求:
Your booking at:精准匹配固定前缀(注意后面的空格,和示例完全对齐)(.*?):第一个非贪婪捕获组,专门匹配位置——非贪婪模式(?)会让它在遇到第一个-(空格+横杠)时就停止,完美卡在你要的位置边界里-:匹配分隔位置和时间的固定分隔符(.*):第二个捕获组,直接匹配分隔符之后的所有内容作为时间戳,因为时间戳是文本的最后部分
小提示
如果你的实际文本里,分隔符前后的空格可能有变化(比如多空格、少空格),可以把规则里的空格改成\s*(匹配任意数量的空白字符),调整后的正则是:
pattern = r"Your booking at\s*(.*?)\s*-\s*(.*)"
这样兼容性更强,但如果是严格按照示例格式的文本,第一个正则就足够精准啦~
内容的提问来源于stack exchange,提问作者Tim Butler




