【问题标题】:OpenRefine: Inverting a regular expressionOpenRefine:反转正则表达式
【发布时间】:2013-08-06 20:38:45
【问题描述】:

我看到了一些关于反转正则表达式的问题,但我无法将这些解决方案应用于 OpenRefine 并让它发挥作用。

例如,假设我有一个邮政编码字段,其中大多数条目都有表单

^\d{5}-\d{4}$

我想过滤掉所有这些条目,以查看使用 GREL 正则表达式剩下的内容。如何在 Openrefine 中创建一个正则表达式来查找所有没有上述形式的字符串?

【问题讨论】:

  • 你的引擎支持负向预测吗?
  • OpenRefine 包含 Java.Util.regex,所以我认为它支持负前瞻。

标签: regex openrefine


【解决方案1】:

您可以使用否定环视来匹配没有某个子字符串的内容。在您的情况下,它将匹配没有 5 位数字后跟短划线后跟 4 位数字的所有内容。

^((?!\d{5}-\d{4}).)*$

在没有特定子字符串的情况下匹配所有内容的另一种解决方法是简单地将该子字符串替换为"",然后获取所有条目。

【讨论】:

  • 这很好用!谢谢。有没有办法修改它以仅返回非空条目(也与模式不匹配)?
  • 很高兴它可以工作,您可以将* 替换为+,这也应该忽略所有非空条目。
  • 对不起,您能说明如何使用正则表达式替换吗?这个herereplace(value,^((?!\d{5}-\d{4}).)*$,"") 有什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
相关资源
最近更新 更多