求正则表达式:提取指定字符串中冒号前的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
相关产品推荐
相关产品推荐

