You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从多空格字符串末尾提取最长单空格子串?

解决方案

问题分析

你之前使用的正则[a-z ]+(?!\s{2,})存在两个关键问题:

  1. 字符范围仅限定小写字母[a-z],无法匹配示例中的大写单词(如Winter),导致根本无法命中目标内容;
  2. 未锚定到字符串末尾,会匹配所有中间符合"单空格分隔"的片段,而非仅最右侧的目标部分。

正确正则表达式

要提取最右侧的单空格分隔子串(自动剔除前导的多空格),可以使用以下正则:

(?:.*?\s{2,})?(\S+(?: \S+)*)$

正则拆解

  • (?:.*?\s{2,})?:非捕获组,非贪婪匹配任意内容直到最后一组至少2个连续空格,该组为可选(兼容字符串开头就是目标内容的场景);
  • (\S+(?: \S+)*):捕获组,匹配由单个空格分隔的非空格字符序列,即你需要的单空格子串;
  • $:锚定到字符串末尾,确保仅匹配最右侧的目标片段。

示例用法

以Python为例:

import re

input_str = "1234  sw   twilight street      Winter City Park"
result = re.search(r'(?:.*?\s{2,})?(\S+(?: \S+)*)$', input_str)
if result:
    print(result.group(1))  # 输出:Winter City Park

额外说明

如果需要兼容目标子串前只有单个空格的极端场景(比如输入为"abc def ghi jkl"),上述正则依然有效,会正确捕获ghi jkl。

内容的提问来源于stack exchange,提问作者JonWayn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:52:46