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

如何用正则表达式提取+分隔的所有分段(含空分段)

解决方案

你之前用的正则[A-Za-z0-9\ß\p{L}&.-]思路完全错误——它只能匹配单个符合规则的字符,既没法覆盖原字符串里的冒号、空格等内容,更提取不了空分段。正确的做法是直接按+作为分隔符处理,或者用正则匹配所有+分隔的片段(包括空)。

方法1:用语言自带的字符串分割函数(推荐)

几乎所有编程语言都提供了按指定字符分割字符串的方法,这类方法会自动保留连续分隔符产生的空分段:

Python

s = "NAD+DP+++Test GmbH & Co. KG:Filiale Test:Test+Groß Test Straße 96-98+Berlin++13452+DE'"
segments = s.split('+')
# 结果:['NAD', 'DP', '', '', 'Test GmbH & Co. KG:Filiale Test:Test', 'Groß Test Straße 96-98', 'Berlin', '', '13452', "DE'"]

JavaScript

const s = "NAD+DP+++Test GmbH & Co. KG:Filiale Test:Test+Groß Test Straße 96-98+Berlin++13452+DE'";
const segments = s.split('+');
// 结果和Python一致,包含所有空分段

Java

String s = "NAD+DP+++Test GmbH & Co. KG:Filiale Test:Test+Groß Test Straße 96-98+Berlin++13452+DE'";
String[] segments = s.split("\\+", -1); // 第二个参数-1表示保留末尾的空分段

方法2:正则匹配(适合只能用正则的场景)

如果必须用正则提取,可以用这个模式匹配所有+分隔的片段(包括空):

[^+]*(?=\+|$)

它的逻辑是:匹配任意数量的非+字符(包括0个,对应空分段),后面紧跟+或者字符串结尾。

比如用Python的re.findall:

import re
s = "NAD+DP+++Test GmbH & Co. KG:Filiale Test:Test+Groß Test Straße 96-98+Berlin++13452+DE'"
segments = re.findall(r'[^+]*(?=\+|$)', s)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:30:04