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

正则实现文本模块前两词及第二个词前三字母匹配的方法

正则实现多词模块宽松匹配方案

规则落地逻辑

需求可通过单条正则覆盖全部命中场景,不需要多层分支判断,核心匹配规则如下:

  • 对每个长度≥3的目标多词模块,仅取前两个词作为匹配锚点
  • 第一个词要求完整匹配
  • 第二个词仅要求前3个字母匹配,后续字符任意(包括无后续字符,即3字母缩写场景)
  • 匹配时忽略大小写,两个词之间要求有空白字符分隔,增加单词边界避免跨词、子串误匹配

单条正则可同时覆盖三类命中场景:

  • 文本包含完整目标模块(如beach vibe some)
  • 文本仅包含模块前两个完整词(如beach vibe)
  • 文本中第二个词为3字母缩写形式(如beach vib、floating pow)

正则构造方式

对每个目标模块,按如下模板生成正则:

  1. 拆分模块得到前两个词word1、word2
  2. 拼接得到正则片段:rf'\b{re.escape(word1)}\s+{re.escape(word2[:3])}\w*\b'
  • 加入re.escape()是为了兼容目标词含正则特殊字符(如.、*)的场景,避免语法报错
  • 若需要避免长词误匹配(比如不想把vibration匹配为vibe),可将\w*替换为{0, len(word2)-3},限制第二个词的最大长度

优化后实现代码

提前预编译所有目标模块的正则,避免逐行计算的性能损耗,代码如下:

import pandas as pd
import re

d = {
    "customerId": [1, 1, 1, 3, 3],
    "text": ["please use beach vibe some",
             "you should use beach vibe",
             "right use beach vib",
             'use floating pow',
             'use floating stuff right now'],
     "element": ['beach vibe some', 'beach vibe some', 'beach vibe some', 'floating power', 'floating stuff']
}
df = pd.DataFrame(data=d)
df['code'] = df['element'].astype('category').cat.codes

# 预生成正则与编码的映射,避免重复计算
element_patterns = []
for ele in df['element'].unique():
    words = ele.split()
    word1, word2 = words[0], words[1]
    pattern = rf'\b{re.escape(word1)}\s+{re.escape(word2[:3])}\w*\b'
    target_code = df.loc[df['element']==ele, 'code'].iloc[0]
    element_patterns.append( (re.compile(pattern, re.IGNORECASE), target_code) )

def match_target(text):
    for pattern, code in element_patterns:
        if pattern.search(text):
            return code
    return 999 # 无匹配时的默认值

df['test'] = df['text'].apply(match_target)
print(df)

运行结果

输出与预期完全一致:

customerId                          text          element  code  test
0           1    please use beach vibe some  beach vibe some     0     0
1           1     you should use beach vibe  beach vibe some     0     0
2           1           right use beach vib  beach vibe some     0     0
3           3              use floating pow   floating power     1     1
4           3  use floating stuff right now   floating stuff     2     2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:54:19