当前位置: 首页 > news >正文

[力扣每日一练]关于特定字符串的匹配

一:题目要求

表:products

+--------------+------------+
| Column Name  | Type       |
+--------------+------------+
| product_id   | int        |
| product_name | varchar    |
| description  | varchar    |
+--------------+------------+
(product_id) 是这张表的唯一主键。
这张表的每一行表示一个产品的唯一 ID,名字和描述。
编写一个解决方案来找到所有描述中 包含一个有效序列号 模式的产品。一个有效序列号符合下述规则:

以 SN 字母开头(区分大小写)。
后面有恰好 4 位数字。
接着是一个短横(-), 短横后面还有另一组 4 位数字
序列号必须在描述内(可能不在描述的开头)
返回结果表以 product_id 升序 排序。

结果格式如下所示。

 

示例:

输入:

products 表:

+------------+--------------+------------------------------------------------------+
| product_id | product_name | description                                          |
+------------+--------------+------------------------------------------------------+
| 1          | Widget A     | This is a sample product with SN1234-5678            |
| 2          | Widget B     | A product with serial SN9876-1234 in the description |
| 3          | Widget C     | Product SN1234-56789 is available now                |
| 4          | Widget D     | No serial number here                                |
| 5          | Widget E     | Check out SN4321-8765 in this description            |
+------------+--------------+------------------------------------------------------+
    
输出:

+------------+--------------+------------------------------------------------------+
| product_id | product_name | description                                          |
+------------+--------------+------------------------------------------------------+
| 1          | Widget A     | This is a sample product with SN1234-5678            |
| 2          | Widget B     | A product with serial SN9876-1234 in the description |
| 5          | Widget E     | Check out SN4321-8765 in this description            |
+------------+--------------+------------------------------------------------------+
    
解释:

产品 1:有效的序列号 SN1234-5678
产品 2:有效的序列号 SN9876-1234
产品 3:无效的序列号 SN1234-56789(短横后包含 5 位数字)
产品 4:描述中没有序列号
产品 5:有效的序列号 SN4321-8765
结果表以 product_id 升序排序。

可见序列号字符串在整个字符串中是独立出现的,它前后都有一个空字符,所以可以确定它作为一个特殊字符串前后是具有字符串边界的。

二:MySQL解决

首先确定该特殊字符串两边有字符串边界,所以应该确定好的初步格式是:'\\b正则表达式\\b'来确定好边界

根据题目表达,可以使用{n}表达特定字符出现了n次,所以结合起来就是 '\\bSN\\d{4}-\\d{4}\\b'

# Write your MySQL query statement below
SELECT * 
FROM products
WHERE description regexp '\\bSN\\d{4}-\\d{4}\\b'
ORDER BY product_id ASC

三:PANDAS解法

python同理,但注意python的正则表达式反斜杠只需要一个就可以了,其他和MySQL一样

import pandas as pd

def find_valid_serial_products(products: pd.DataFrame) -> pd.DataFrame:
    A=products['description'].str.contains(r'\bSN[0-9]{4}-[0-9]{4}\b')
    return products[A]
    

http://www.dtcms.com/a/108532.html

相关文章:

  • Flutter 插件 百度地图 Android插件演示
  • 配置Next.js环境 使用vscode
  • 多元守护,构筑健康生活
  • ClickHouse与Doris对比:数据处理领域的“华山论剑”
  • 制作cass高程点块定义——cad c#二次开发
  • 在QGIS中将矢量数据导出为JSON
  • 运营商在网状态查询API接口如何对接?
  • 【Axure高保真原型】动态柱状图
  • Redis中set数据类型的内部编码及使用场景
  • 5、vim编辑和shell编程【超详细】
  • TypeScript基础教程
  • 第二章:chrony服务器
  • LLM面试题二
  • 高通camx IOVA内存不足,导致10-15x持续拍照后,点击拍照键定屏无反应,过一会相机闪退
  • SpringMVC响应数据:页面跳转与回写数据
  • 蓝桥杯最后十天冲刺 day 2 双指针的思想
  • TortoiseSVN设置忽略清单
  • 新零售系统是什么样的?有什么好处?
  • Links for llama-cpp-python whl安装包下载地址
  • WEB安全--SQL注入--上传webshell的其他方式
  • QT_xcb 问题
  • java问题
  • 《Viewport:解析与优化,提升网页体验的关键要素》
  • ETLCloud是如何通过Oracle实现CDC的?
  • Elasticsearch 报错index_closed_exception
  • JavaScript Array(数组)
  • LVGL实现一个简易画图板
  • OSPF的Broadcast网络类型
  • [论文笔记] Deepseek技术报告解读: MLAMTP
  • Ubuntu与本地用户交流是两种小方法