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

求正则表达式:提取指定字符串中冒号前的Taxi/HeavyTruck信息

提取冒号前内容的正则解决方案

没问题,这事儿很好解决!针对你给出的字符串格式,我给你整理了几种靠谱的正则表达式思路,轻松提取出Taxi或者HeavyTruck这类冒号前的内容:

核心思路

我们的目标是匹配冒号(:)之前的有效内容,需要考虑两种常见情况:冒号前直接跟目标词,或者目标词和冒号之间有空格(比如你例子里的HeavyTruck :)。

具体正则方案

方案1:兼容带空格的通用正则

这个正则可以适配冒号前有无空格的情况,非常实用:

[^:\s]+(?=\s*:)

正则解释:

  • [^:\s]+:匹配一个或多个既不是冒号也不是空白字符的内容,精准锁定目标词
  • (?=\s*:):正向预查,确保匹配内容的后面跟着「0个或多个空白字符 + 冒号」,不会把空格或冒号包含进结果里

方案2:仅匹配无空格的场景(针对你给出的示例)

如果确定冒号前没有空格,用这个更简洁的正则:

[^:]+(?=:)

正则解释:

  • [^:]+:匹配一个或多个非冒号的字符
  • (?=:):正向预查,确保后面紧跟冒号,排除冒号本身

代码示例(Python)

给你写个Python的实际使用例子,直接就能跑:

import re

# 你的目标字符串
input_text = "Taxi:[(h19){h12}], HeavyTruck :[(h19){h12}]"
# 使用方案1的正则
pattern = r'[^:\s]+(?=\s*:)'
# 提取所有匹配项
results = re.findall(pattern, input_text)

print(results)  # 输出结果:['Taxi', 'HeavyTruck']

代码示例(JavaScript)

如果用JS的话,代码是这样的:

const inputText = "Taxi:[(h19){h12}], HeavyTruck :[(h19){h12}]";
const pattern = /[^:\s]+(?=\s*:)/g;
const results = inputText.match(pattern);

console.log(results); // 输出结果:['Taxi', 'HeavyTruck']

多行场景适配

如果你的内容是多行的,比如:

Taxi:[(h19){h12}]
HeavyTruck :[(h19){h12}]

只需要给正则加上多行模式标志(Python里用re.M,JS里用/m),就能逐行提取每一行的冒号前内容啦。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:48:02