正则表达式技术问询:提取分隔符间目标字符串并排除前后空格
当然可以用单个正则表达式搞定这两个提取需求!
我来逐个拆解你的场景,给出对应的正则方案和解释:
场景1:提取TEXT1/TEXT2/TEXT3/TEXT4这类分隔符前的内容
你的示例字符串结构是 TEXTn | [后续内容],核心需求是提取每个|符号前的文本,同时自动去除文本前后的空格。对应的正则表达式(带全局匹配修饰符)如下:
(?<=^\s*|\|\s*).*?(?=\s*\||$)
正则逻辑解释:
(?<=^\s*|\|\s*):正向预查,确保目标文本要么在字符串开头(允许前面有空格),要么紧跟在|符号(允许|后有空格)之后.*?:非贪婪匹配任意字符,避免过度匹配到后面的分段(?=\s*\||$):正向预查,确保目标文本要么在|符号(允许|前有空格)之前,要么在字符串结尾
测试你的第一个示例字符串,全局匹配后会直接得到:["TEXT1", "TEXT2", "TEXT3", "TEXT4"],完全符合你要的结果。
场景2:提取指定的特殊格式文本(Lorem Ipsum dolor/sit等)
第二个场景里的目标文本虽然包含/、,、&这类特殊字符,但核心结构和场景1一致——都是每个|符号前的内容。直接复用上面的正则表达式即可:
(?<=^\s*|\|\s*).*?(?=\s*\||$)
用你的示例字符串测试,全局匹配后会得到:["Lorem Ipsum dolor/sit", "Lorem Ipsum Amet", "Lorem Ipsum dolor/sit", "Lorem, Ipsum & Dolor"],精准命中你标注的加粗内容。
额外提示
- 不同编程语言里的正则调用方式略有差异:比如JavaScript用
字符串.match(/正则/g),Python用re.findall(r'正则', 字符串),只要开启全局匹配就能一次性提取所有目标片段。 - 非贪婪模式的
.*?是关键,它能确保每个分段被独立提取,不会出现“从第一个|匹配到最后一个|”的错误。
内容的提问来源于stack exchange,提问作者Alex P
相关产品推荐
相关产品推荐

