Pig - 使用正则表达式解析字符串

2024-03-21

我被困在 Pig 中的字符串解析上。

我查看了周围的文档regex_extract and regex_extract_all并希望使用其中一项功能。

我有文件'/logs/test.log':

cat '/logs/test.log'
user=242562&friend=6226&friend=93856&age=35&friend=35900

我想提取friend来自 url 的标签,在本例中,我有 3 个相同的标签。regex_extract似乎只适用于第一个实例,这是我所期望的,并且对于regex_extract_all,似乎我已经知道整个字符串模式,它在源文件的每一行上都会发生变化。

看起来不错regex_extract,但这个选项只给了我第一个。

 [root@test]# pig -x local
 A = LOAD './test.log';
 B = FOREACH A GENERATE REGEX_EXTRACT($0, 'friend=([0-9]*)',1);
 dump B;
 (6226)

我看到的例子regex_extract_all显示查找所有标签的正则表达式:

  B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL($0, 'user=([0-9]+?)&friend=([0-9]+?)&friend=([0-9]+?)&.+?'));
 dump B;
 (242562,6226,93856)

这似乎可行,但我真的只是想提取朋友 - (6226,93856,35900)。我也遇到过每个用户可能有超过或少于 3 个朋友的情况。

有任何想法吗?

也在考虑使用类似的东西FLATTEN(TOKENIZE($0,'&'))然后以某种方式只过滤SUBSTRING($0,0,INDEXOF($0,'=')) == 'friend'或类似的东西,但想看看是否有人知道一个好的正则表达式方法。


这可以通过简单的字符串操作来实现:

inputs = LOAD 'input' AS (line: chararray);
tokenized = FOREACH inputs GENERATE FLATTEN(TOKENIZE(line, '&')) AS parameter;
filtered = FILTER tokenized BY INDEXOF(parameter, 'friend=') != -1;
result = FOREACH filtered GENERATE SUBSTRING(parameter, 7, (int)SIZE(parameter)) AS   friend_number;
DESCRIBE tokenized;
DUMP tokenized;
DESCRIBE filtered;
DUMP filtered;
DESCRIBE result;
DUMP result;

result:

tokenized: {parameter: chararray}
(user=242562)
(friend=6226)
(friend=93856)
(age=35)
(friend=35900)
filtered: {parameter: chararray}
(friend=6226)
(friend=93856)
(friend=35900)
result: {friend_number: chararray}
(6226)
(93856)
(35900)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pig - 使用正则表达式解析字符串 的相关文章

  • 如何在 MSVS 2012+ 编辑器(和 .NET?)中使用正则表达式替换插入“\”+“n”

    在 Visual Studio 2013 的编辑器中 我理解它与 2012 非常相似 据称使用 NET 正则表达式 我无法获取替换字符串来插入反斜杠和 n 这可能吗 我想插入 n 在第一个 之后 在 C 程序的某些 但不是全部 行上 即使字
  • 正则表达式是否用于构建解析器?

    这只是出于好奇的一个问题 因为我最近需要越来越多地解析和使用正则表达式 似乎 对于我在搜索中遇到的有关某种解析的问题 有人总是最终说 当问一些与正则表达式相关的问题 正则表达式对此不好 请使用这样那样的解析器 因为我已经更好地理解了正则表达
  • Google Analytics 正则表达式排除短语

    我正在使用以下 URL 创建内容分组 my category something my category somethingelse my category product1 brand color my category product2
  • 如何在 Java 中用 \n 替换 \\n

    我有一个string test first n middle n last 现在我想更换所有 n by n 我试过了test replaceAll n n and test replaceAll n n 但它们不起作用 有人有解决办法吗 T
  • 需要初学者 PHP 帮助

    我学习 PHP 一段时间了 我想要一个澄清 我见过preg match使用不同的分隔符号调用函数 例如 preg match and preg match 今天我还看到了 正在使用 我的问题分为两部分 所有字符都可以使用什么 有一个标准吗
  • 以点作为分隔符分割字符串

    我想知道我是否要在一个字符串上分割字符串 正确的方式 我的代码是 String fn filename split return fn 0 我只需要字符串的第一部分 这就是我返回第一项的原因 我问这个是因为我在 API 中注意到 意味着任何
  • Perl 的 grep 函数如何与正则表达式一起使用?

    以下 grep 函数如何工作 什么作用 0o1Iil do chars grep 0o1Iil 0 9 A Z a z use Data Dumper print Dumper chars 在 chars中生成以下内容 VAR1 0 VAR
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • 正则表达式:如何表达没有下划线的 \w

    有没有简洁的表达方式 w but without 即 w 中包含的所有字符 除了 我问这个是因为我正在寻找最简洁的方式来表达域名验证 域名可以包含小写和大写字母 数字 句号和破折号 但不能包含下划线 w 包括以上所有内容 加上下划线 那么
  • 递归BBCode解析

    我正在尝试解析脚本中的 BBCode 现在 它可以无缝工作 直到我尝试缩进不仅仅是粗体或下划线的 BBCode 例如剧透 网址 字体大小等 然后它就会搞砸 这是我的代码 function parse bbcode text global d
  • 正则表达式贪婪匹配未按预期工作

    我有一个非常基本的正则表达式 我只是不明白为什么它不起作用 所以问题分为两部分 为什么我当前的版本不起作用以及正确的表达方式是什么 规则非常简单 必须至少包含 3 个字符 如果 字符是第一个字符 则必须至少包含 4 个字符 因此 以下情况应
  • 使用起始字符串和结束字符串从长字符串中提取子字符串?

    我有这个长字符串 它是一个长的连续字符串 Home address H NO 12 SECTOR 12 GAUTAM BUDH NAGAR NOIDA 121212 UTTAR PRADESH INDIA 911112121212 Last
  • 匹配 JavaScript RegEx 中的不可见字符

    我有一些包含不可见字符的字符串 但它们位于可预测的位置 通常 围绕我想要提取的文本片段 然后在第二次出现之后我想保留文本的其余部分 我似乎不知道如何关闭隐形字符 and将它们从我的结果中排除 为了匹配隐形 我一直在使用这个正则表达式 xA0
  • 用于检查字符串是否至少包含 3 个字母数字字符的最有效的正则表达式

    我有这个正则表达式 a zA Z0 9 3 我用它来查看字符串中是否至少包含 3 个字母数字字符 似乎有效 它应该匹配的字符串示例 a3c 0 c 8 9 9d 但是 我需要它更快地工作 有没有更好的方法使用正则表达式来匹配相同的模式 编辑
  • java regex 屏蔽列表中的所有元素,最后 4 个字符可见

    我有一个字母数字字符串列表 如下所示 nG5wnyPVNxS6PbbDNNbRsK5zanG94Et6Q4y74 GgQoDWqP7KtxXeePyyebu5EnNp8XxPC1odeNv GgQoDWqP7KtxXeePyyebu5EnN
  • 将字符串分解为标记,保持引用的子字符串完整

    我不知道我在哪里看到它 但是谁能告诉我如何使用 php 和 regex 来完成这个任务 this is a string that has quoted text inside 我希望能够像这样爆炸它 0 this 1 is 2 a 3 s
  • Golang 正则表达式命名组和子匹配

    我正在尝试匹配正则表达式并获取匹配的捕获组名称 当正则表达式仅与字符串匹配一次时 这是有效的 但如果它与字符串匹配多次 SubexpNames不返回重复的名称 这是一个例子 package main import fmt regexp fu
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • 如何在 sed 中转义方括号[重复]

    这个问题在这里已经有答案了 我正在使用 grep 和 sed 解析遗留的 C 代码 当尝试替换方括号时 发生了一些奇怪的事情 以下代码替换方括号效果很好 echo xyx xzx xyx sed s g 结果是 xyx xzx xyx 当我
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊

随机推荐

  • static >

    我有以下带有一个静态方法的类 public class Helper public static
  • React js onclick 地图函数中的切换类

    如何处理映射列表 dom 中的切换类 onclick 函数 this state data map function el i var className self state condition list row active inact
  • 将变量数组转换为字符串

    我正在尝试使用 vba 将变量数组转换为字符串 我尝试了两种方法 但都不起作用 它们似乎都在同一点上阻塞 Dim cell As Range Dim val As Variant For Each cell In Range packing
  • 将 JavaScript 类导入另一个类时出现意外的标识符 {classname}

    我正在使用 Node v10 11 0 并从 Ubuntu 18 04 运行此脚本 我的文件设置如下所示 main js import Login from Login mjs class Main constructor const lo
  • 将:click 事件传递到动态创建的

    我基本上需要能够触发一个或多个组件中的某些内容 即 当父级中的图标 按钮时通过 svelte component 动态添加 单击组件 例如我需要挂钩下面用 表示的部分 each charts as chart i div class wra
  • 具有链接时代码生成功能的 MSVC 能否跨 C 和 C++ 进行优化?

    If 链接时代码生成 LTCG https learn microsoft com en us cpp build reference ltcg link time code generation与 MSVC 一起使用时 是否可以跨 C 和
  • 使用 Facebook Graph API 和 HybridAuth 获取好友位置

    Problem 我想得到friends location来自 Facebook Graph API 我正在使用以下方式访问 API混合认证 http hybridauth sourceforge net 框架 如何返回朋友的位置 家乡等 我
  • 带箭头刻度的 Matplotlib 曲线

    我想知道是否可以绘制一条曲线matplotlib带有箭头刻度 就像是 from pylab import y linspace 0 10 0 01 x cos y plot x y gt 应该有这样的曲线 gt gt gt 当 x 增加时
  • JPA 检查实体是否可以删除

    如何检查JPA中的实体是否可以删除并且不会抛出数据完整性异常 我想到的唯一方法是一一检查所有引用的实体 或者尝试在事务中删除然后回滚 但是还有其他更简单的方法吗 如果 可以删除 的意思是 如果实体存在于持久性上下文中 那么您已经回答了您的问
  • iPhone ASIHTTP - 区分 API 调用?

    我目前有一个视图控制器 它实现 ASIHTTP 来处理 API 调用 我的视图控制器触发了 2 个单独的调用 我需要能够区分 requestFinished ASIHTTPRequest request 方法中的两个调用 这样我就可以相应地
  • AWS Step Functions:使用 JsonPath 过滤数组

    我需要在 AWS Step Functions 状态下过滤数组 这似乎是我应该可以使用 JsonPath 轻松实现的目标 但由于某种原因我正在努力 我想要处理的状态如下所示 items id A id B id C 我想通过删除其中的条目来
  • 将表数据存储到 jquery 变量

    我想将表中的数据存储到 jquery 变量中 我使用的代码如下 但此代码将所有表标签 如 tr td 和所有内容 存储到变量中 因为我只需要将数据存储在 td 中以文本格式标记到 jquery 变量 有人可以帮忙吗 var table my
  • 检查 Firebase 实时数据库中是否已存在用户

    我得到了亚历克斯 马莫的解决方案 https stackoverflow com a 47893879 4176989为了检查我的数据库中是否存在唯一值 但快照始终为空 解决方案在这里 DatabaseReference rootRef F
  • WebConfigurationManager.AppSettings 的缓存?

    我有很多读取我的 Web 配置文件的请求 variable WebConfigurationManager AppSettings BLAH Do WebConfigurationManager AppSettings每次都从磁盘读取 还是
  • Go中从IP地址获取域名

    我正在尝试从 IP 地址解析主机名 这显然比我想象的更具挑战性 我尝试过使用几个函数 包括net LookupHost方法 但它们似乎都只是返回我输入的IP地址 这是我正在使用的代码 package main import fmt net
  • 作用域 bean:将一个 bean 注入另一个 bean

    如何在没有代理的情况下将会话范围 bean 注入另一个会话范围 bean Component Scope session class Foo Inject Bar bar Component Scope session class Bar
  • 如何在Python中浏览内存中的sqlite数据库

    我需要使用内存中的 sqlite 数据库和以下构造函数 db sqlite3 connect memory 但在调试时 我发现它非常不方便 因为与基于文件的数据库不同 我无法在调试器中浏览数据库 有没有办法即时浏览这个数据库 您可以在调试器
  • 在反应性香蕉中进行测试

    有没有办法对用反应性香蕉创建的网络进行单元测试 假设我已经使用一些输入事件建立了一些网络 是否可以验证事件已产生一些输出流 行为在一定数量的输入事件之后具有一定的价值 这样做有意义吗 我注意到有各种interpret 功能 但似乎无法弄清楚
  • IE8 中的 JavaScript 事件原型

    我正在尝试向事件原型添加一个方法 为了呼叫 设置preventDefault 或者 用 IE 来说returnValue false以及 如果需要的话 stopPropagation cancelBubble true 我认为下面的代码就足
  • Pig - 使用正则表达式解析字符串

    我被困在 Pig 中的字符串解析上 我查看了周围的文档regex extract and regex extract all并希望使用其中一项功能 我有文件 logs test log cat logs test log user 2425