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

使用LIKE搜索文本框输入及提取长字符串中91/92/93间数值的问题

提取标记间数值的解决方案

LIKE模糊匹配不支持定点提取标签间内容,且长输入下容易触发生成执行计划时的长度限制报错,直接用正则匹配即可解决,不同场景实现如下:

数据库中直接提取(无长输入报错)

以主流数据库为例,使用内置正则函数不需要提前截断输入:

  • MySQL/MariaDB 提取<strong>91</strong>和<strong>92</strong>中间值:
    SELECT REGEXP_SUBSTR(字段名, '<strong>91</strong>(.*?)<strong>92</strong>', 1, 1, 'c', 1) AS 91_92数值 FROM 表名;
  • 提取<strong>92</strong>和<strong>93</strong>中间值:
    SELECT REGEXP_SUBSTR(字段名, '<strong>92</strong>(.*?)<strong>93</strong>', 1, 1, 'c', 1) AS 92_93数值 FROM 表名;

PostgreSQL对应语法为 substring(字段名 FROM '<strong>91</strong>(.*?)<strong>92</strong>'),逻辑完全一致。

后端Python实现

import re

raw_text = "0121247854789652211564864456464132564641021564646543531<strong>91</strong>01<strong>92</strong>03<strong>93</strong>01940215646541"
val_91_92 = re.search(r'<strong>91</strong>(.*?)<strong>92</strong>', raw_text).group(1)
val_92_93 = re.search(r'<strong>92</strong>(.*?)<strong>93</strong>', raw_text).group(1)

# 输出结果:val_91_92为01,val_92_93为03

前端JS实现

const rawText = "0121247854789652211564864456464132564641021564646543531<strong>91</strong>01<strong>92</strong>03<strong>93</strong>01940215646541"
const val91to92 = rawText.match(/<strong>91<\/strong>(.*?)<strong>92<\/strong>/)[1]
const val92to93 = rawText.match(/<strong>92<\/strong>(.*?)<strong>93<\/strong>/)[1]

所有实现都采用非贪婪匹配.*?,避免标签前后存在重复内容时匹配出错,且无输入长度限制,不会触发之前的长度报错问题。

内容的提问来源于stack exchange,提问作者Sinem Hür

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:51:01