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

Pig脚本正则表达式筛选:排除以‘-单个数字’结尾的字符串

在Pig脚本中筛选不以‘-<单个数字>’结尾的字符串

没问题,我来帮你搞定这个Pig脚本里的正则筛选需求!核心思路是排除所有以“-单个数字”结尾的字符串,反过来就得到我们要保留的内容。

先明确匹配规则

先给你理清楚哪些是要保留的,哪些是要排除的:

  • 🔹 匹配项(需要保留的字符串):
    • "abc"(无后缀)
    • "def-xyz"(后缀是字母,不是单个数字)
    • "ghi-123"(后缀是-三位数字,不是单个)
    • "jkl-"(只有减号,没有数字)
  • 🔸 不匹配项(需要排除的字符串):
    • "mno-5"(结尾是-单个数字)
    • "pqr-9"(结尾是-单个数字)
    • "stu-0"(结尾是-单个数字)

Pig脚本实现步骤

假设你已经加载了包含目标字符串的数据集,我们用FILTER结合正则表达式来实现筛选:

  1. 首先加载数据(示例中假设数据文件每行一个字符串):
raw_data = LOAD 'your_data_file.txt' AS (target_str: chararray);
  1. 执行筛选逻辑:
filtered_data = FILTER raw_data BY NOT (target_str MATCHES '.*-\\d$');

正则表达式解释

这里的正则.*-\\d$是关键,拆解一下:

  • .*:匹配任意字符(除换行)任意次数,覆盖字符串开头到减号前的部分
  • -:匹配字面量的减号
  • \\d:匹配单个阿拉伯数字(0-9)——注意Pig里字符串的反斜杠需要转义,所以写两个\\
  • $:锚定到字符串结尾,确保减号和数字是最后一部分

加上NOT之后,就会保留所有**不满足“-单个数字结尾”**的字符串,正好符合你的需求。

额外注意点

  • 如果你的字符串可能包含特殊字符(比如转义字符),可以根据实际情况调整正则,但这个写法覆盖了绝大多数常规场景
  • 要是需要支持多语言数字(比如中文数字),那得把\\d换成更宽泛的字符集,但一般业务场景下用\\d就足够了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:44:14