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

如何筛选列中TOM前后为非字母字符的目标行?

如何按规则筛选包含TOM的行?

嘿,这个筛选需求其实核心是要把TOM当作一个不被字母包裹的独立单元来匹配对吧?我给你整理了几个常用工具的实现方法,直接就能套用:

核心筛选逻辑拆解

咱们要找的是满足以下任意一种情况的行:

  • TOM就是单元格的全部内容(比如单独的"TOM")
  • TOM前面是非字母字符(比如"123_TOM"里的下划线、"TOM-TOM"里的字符串开头)
  • TOM后面是非字母字符(比如"TOM 12"里的空格、"TOM,TIN"里的逗号)

而像"SITTOM"(TOM前面是字母S)、"ATOM"(TOM前面是字母A)、"TOMMY"(TOM后面是字母M)、"TOMA"(TOM后面是字母A)这些,因为TOM被字母紧紧包裹了,所以要排除。

不同工具的实现方案

1. Excel/Google Sheets 公式

假设你的数据在A列,在B1单元格输入下面的公式,下拉填充后,筛选B列为TRUE的行就搞定了:

=REGEXMATCH(A1,"(^|[^A-Za-z])TOM([^A-Za-z]|$)")

简单解释下这个正则:

  • ^ 匹配字符串开头,$ 匹配字符串结尾
  • [^A-Za-z] 匹配任何非字母的字符
  • 整个表达式就是确保TOM要么在开头/结尾,要么前后被非字母字符隔开,完美符合你的规则。

2. SQL 语句

不同数据库的正则语法略有差异,这里给几个常用的版本:

MySQL/MariaDB

SELECT * FROM your_table
WHERE your_column REGEXP '(^|[^a-zA-Z])TOM([^a-zA-Z]|$)';

PostgreSQL

SELECT * FROM your_table
WHERE your_column ~ '(^|[^a-zA-Z])TOM([^a-zA-Z]|$)';

SQL Server(2016及以上版本)

SELECT * FROM your_table
WHERE REGEXP_LIKE(your_column, '(^|[^a-zA-Z])TOM([^a-zA-Z]|$)');

3. Python Pandas 处理

如果你用Pandas处理数据集,代码可以这么写:

import pandas as pd

# 读取你的数据,假设目标列名为"target_column"
df = pd.read_csv("your_data.csv")
# 筛选符合条件的行
filtered_df = df[df['target_column'].str.contains(r'(^|[^a-zA-Z])TOM([^a-zA-Z]|$)', regex=True)]
# 查看筛选后的结果
print(filtered_df)

额外说明

你给出的筛选结果里包含了TIM、TOP、TON这些本身不含TOM的行,如果确实需要把这些也纳入筛选范围,可以把正则调整为:

(^|[^A-Za-z])TOM([^A-Za-z]|$)|^(TIM|TOP|TON)$

这个表达式会同时匹配符合TOM规则的行,以及单独的TIM、TOP、TON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:23