Google Refine中的Value.match()正则表达式

mch*_*gun 7 regex openrefine

我试图从Google Refine的列中提取一系列数字.这是我的代码:

value.match(/[\d]+/)[0]
Run Code Online (Sandbox Code Playgroud)

我的专栏中的数据格式为

abcababcabc 1234566 abcabcbacdf
Run Code Online (Sandbox Code Playgroud)

结果为"null".我不知道为什么!!如果不是\d我尝试,它也是null \w.

Tom*_*ris 7

OpenRefine不会像某些系统那样在模式的末尾添加隐式通配符(并且正如人们所期望的那样).请尝试使用此模式:

value.match(/.*?(\d+).*?/)[0]
Run Code Online (Sandbox Code Playgroud)

你需要在通配符上使用惰性/非贪婪限定符(即问号),这样它们就不会吞噬你的一些数字.如果你只是使用/.*(\d+).*/你只会匹配一个数字,因为其余的将由.*模式.

可以在Java的Pattern类文档中看到实现的完整文档.