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

使用正则表达式匹配地址行任意单词并替换空格为+的问题

解决方案

问题根源

你之前的正则有两个明显问题:

  1. 开头字符集[a-zA-Z#-]未包含数字,导致以数字开头的行(如24567 london UK 、56-67 france germany germany 67886)无法匹配
  2. 用固定的\s(.+)分组,只能适配4个元素的行,无法支持任意数量的空格分隔内容

实现步骤

1. 匹配所有目标行

用以下正则匹配所有符合格式的地址行:

^[\w#-].*$
  • ^:定位行起始位置
  • [\w#-]:匹配行首的字母、数字、下划线、#或-,覆盖你所有示例行的开头
  • .*$:匹配行内剩余所有内容直到行尾

2. 替换空格为+

无需复杂分组,直接将行内所有空白字符替换为+即可,根据使用场景选择对应实现:

  • Python 代码:
    import re
    raw_lines = [
        "#23 newyork USA 56778",
        "24567 london UK ",
        "56-67 france germany germany 67886"
    ]
    # 替换所有连续空格为+,同时去除行尾多余空格(可选)
    processed_lines = [re.sub(r'\s+', '+', line.rstrip()) for line in raw_lines]
    
  • Shell sed 命令:
    # 替换所有单个空格为+
    sed 's/ /+/g' your_address_file.txt
    # 替换连续空格为单个+
    sed 's/\s\+/+/g' your_address_file.txt
    

最终效果

处理后你会得到:

  • #23+newyork+USA+56778
  • 24567+london+UK
  • 56-67+france+germany+germany+67886

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:47:59