openrefine 在符号之间提取值

如何解决openrefine 在符号之间提取值

我正在尝试使用 Openrefine 从整个字段中提取文本字符串。 这是我的数据集的摘录:

172.    D3B: 23Y1-Up,27Y1-Up  (36 LK) 6-S/F Rollers,4-D/F Rollers,2-Carrier Rollers
179.    D3C: 23Y2508-UP (37LK) 6-S/F,4-D/F,2-T/C  
180.    27Y5050-UP (37LK) 6-S/F,2-T/C   
181.    2XF622-UP (37LK) 6-S/F,2-T/C    
182.    3RF0147-UP (36LK) 6-S/F,2-T/C
200.    D4D:67A1-UP,78A1-UP,85A1-UP,86A1-UP,59J1-644,58J1-UP,49J1-473,22C1-UP,91A1-UP,88A1-UP

我想从记录 172 中提取 23Y1-Up,27Y1-Up23Y2508-UP 来自记录 179,27Y5050-UP 来自记录 180 以及整个 67A1-UP,88A1-UP 来自记录 200

所以基本上规则是提取 :if present 和 ( if present之间的所有内容。也许将其限制在出现一个或多个字符串 UP

的地方

所以我使用 value.match 基于现有列添加一个新列。 我试图根据我的范围调整一些查询,但尽管进行了多次尝试,但我离成功还很远。 我从这个正则表达式 value.match(/\:?\s*(\w+\.?)+?.*/)[0] 开始,我认为它会在分号(和空格)之后隔离任何单词,但它仅适用于 BEFORE... 昨天我成功提取了 LK 之前的数字,这也是我的数据集的相关信息,但我无法掌握这一点。

非常感谢任何帮助! 谢谢

解决方法

使用 match 匹配整个字符串。

您可以使用带有否定字符类的单个捕获组来排除匹配的 (

^[^:]*:\s*([^(]+).*$
  • ^[^:]*:\s* 匹配直到第一个 : 后跟可选的空白字符
  • ( 捕获组 1
    • [^(]+ 匹配 1+ 次出现的任何字符,除了 (
  • ) 关闭第 1 组
  • .*$ 匹配该行的其余部分

regex demo

或者在只匹配由连字符分隔的单词字符的组中捕获

^[^:]*:\s*(\w+-\w+(?:,\s+\w+-\w+)*).*$

regex demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?