1

我正在尝试从 OpenRefine 中的一列字符串值中提取日期。所有日期都在值之间使用句点或破折号格式化。(例如“a_string_12-2-15”、“3.12.99_another_string”)

我试过value.contains(/[0-9]+[.-][0-9]+[.-][0-9]+/)了,他们都回来了。但是, value.match(/[0-9]+[.-][0-9]+[.-][0-9]+/) 返回 null。我也尝试用 \d 替换 [0-9] 并没有解决它。我究竟做错了什么?

4

1 回答 1

2

match函数非常违反直觉,并不像你想象的那样工作。你可以没有它。自 Open Refine 3 以来,有一个查找功能可以完全满足您的需求。:)

所以试试这个:

value.find(/[0-9]+[.-][0-9]+[.-][0-9]+/).join(',')

.join(',')如果您在单个字符串中有多个日期,则该部分就在那里。否则,这是另一种选择:

value.find(/[0-9]+[.-][0-9]+[.-][0-9]+/)[0]

只是为了记录,您可以使用这种恐怖获得与 match 相同的结果(如果您在同一字符串中有多个日期,这将无法正常工作)

value.match(/.*?([0-9]+[.-][0-9]+[.-][0-9]+).*/).join(',')
于 2019-09-25T20:37:36.673 回答