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

Python正则与Pandas方案:校验指定序列在分隔符前后的存在性

字符串校验方案

需求说明

现有字符串格式示例:ID123456_SIT,UAT,其中ID######为固定硬编码前缀。需要校验字符串满足:以ID123456_开头,且逗号分隔的任意位置(包括无逗号的单值场景、多逗号场景)存在SIT或UAT。

以下场景均需匹配:

  • ID123456_SIT,UAT
  • ID123456_UAT,SIT
  • ID123456_SIT
  • ID123456_UAT
  • ID123456_TRA,SIT,UAT

原正则(^ID123456_)(SIT|UAT),(SIT|UAT)仅支持前两种双值场景,无法适配单值及多逗号场景,以下提供两种解决方案:


方案一:正则表达式

使用更灵活的正则覆盖所有场景,表达式如下:

^ID123456_(?:[^,]*?(SIT|UAT)[^,]*)$

逻辑说明

  • ^ID123456_:强制匹配开头的固定前缀
  • [^,]*?:匹配任意非逗号字符(非贪婪模式,避免跳过目标值)
  • (SIT|UAT):匹配目标值SIT或UAT
  • [^,]*:匹配后续任意非逗号字符(包括逗号分隔的其他项)
  • 整体确保字符串中至少存在一个SIT或UAT,且前缀正确

Python示例代码

import re

# 定义正则模式
pattern = r'^ID123456_(?:[^,]*?(SIT|UAT)[^,]*)$'

# 测试用例
test_strings = [
    'ID123456_SIT,UAT',
    'ID123456_UAT,SIT',
    'ID123456_SIT',
    'ID123456_UAT',
    'ID123456_TRA,SIT,UAT'
]

# 批量校验
for s in test_strings:
    match_result = re.fullmatch(pattern, s)
    print(f"{s} - {'匹配成功' if match_result else '匹配失败'}")

方案二:Pandas列校验

如果需要在Pandas数据框中批量校验某列,可通过自定义函数实现:

Python示例代码

import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    'env_str': [
        'ID123456_SIT,UAT',
        'ID123456_UAT,SIT',
        'ID123456_SIT',
        'ID123456_UAT',
        'ID123456_TRA,SIT,UAT',
        'ID123456_TRA',  # 不匹配示例
        'OTHER_PREFIX_SIT'  # 不匹配示例
    ]
})

# 定义校验函数
def validate_env(s):
    # 先检查前缀是否正确
    if not s.startswith('ID123456_'):
        return False
    # 分割出逗号分隔的项
    env_items = s.split('_')[1].split(',')
    # 检查是否存在SIT或UAT
    return any(item in {'SIT', 'UAT'} for item in env_items)

# 生成校验结果列
df['is_valid'] = df['env_str'].apply(validate_env)

# 输出结果
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:25:50