在openRefine内部,我想在一个网站的源上运行下面的regex,它可以找到带有mailto链接的电子邮件地址。我的问题是,当运行value.match时,我会得到以下错误:
在偏移量12处解析错误:糟糕的正则表达式(索引10 .*mailto:[^ ]附近的未封闭字符类)
我已经在没有value.match的另一个环境中测试了这个表达式,它可以工作。
value.match(/.*mailto:[^/"/']*.com.*/)发布于 2016-07-05 20:16:28
isNotNull(value.match(/.*mailto:[^\"\']*.com.*/)) 正如在match()函数的参考页面中所描述的,它返回RegEx模式中的捕获组数组,如果您的值与该模式相同,则isNotNull()将输出真或假。
这里还描述了:https://github.com/OpenRefine/OpenRefine/wiki/Understanding-Regular-Expressions#basic-examples
您也可以使用get(),如这里在我们的wiki上的累赘描述,但只有在每个单元格只有一个电子邮件地址的情况下才能正常工作(因为get()函数没有编号,可以进行假设,并使用数组的长度来确定最后一个元素,而不是第一个或第三个元素,等等):https://github.com/OpenRefine/OpenRefine/wiki/Recipes#find-a-sub-pattern-that-exists-at-the-end-of-a-string。
例如:
get(value.match(/.*(mailto:[^\"\']*.com).*/),0)发布于 2016-07-07 08:27:32
所以如果你有这样的短信:
Blah blah <a href="mailto:j.bloggs@example.com">mail me</a>要使用OpenRefine中的匹配函数提取电子邮件地址,您需要使用:
value.match(/.*mailto:([^\"\']*.com).*/)这将提供一个包含电子邮件地址的数组,该地址是使用捕获组捕获的。要从数组中提取电子邮件地址(如果要将邮件地址存储在OpenRefine单元中是必要的),需要从数组中获取字符串值。例如:
value.match(/.*mailto:([^\"\']*.com).*/)[0]原始表达式和这个表达式的不同之处在于,字符被正确转义,并且有一个捕获组--基本上实现了上面注释中@LukStorms的建议。
https://stackoverflow.com/questions/38208988
复制相似问题