从电子表格单元格中提取特定字符串

时间:2017-02-22 20:53:53

标签: regex libreoffice-calc

我有一个LibreOffice Calc电子表格,需要从每行的单元格中提取一个小字符串。单元格包含大约一段文字,看起来类似于下面但都有不同的单词,长度等。一个常见的事实是我需要提取的文本的格式,在这种情况下def f(group): return pd.DataFrame([{'num_Countries': group.Country.count(), 'mean': group.mean().mean()}]) grouped = df.groupby('Continent') result = grouped.apply(f).reset_index(level=1, drop=True) 但是可以是24h格式的任何日期/时间格式。

  

Lorem Ipsum只是打印和排版的虚拟文本   行业。 Lorem Ipsum一直是17/11/2016 09:00行业   标准的虚拟文本自16世纪以来,当一个未知的打印机采取   一个类型的厨房,并争先恐后地制作一个类型的样本书。

我搜索了以下网站,但无法将它们连接在一起工作甚至匹配,更不用说提取实际字符串了。

http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

公式:

=MID(A1,SEARCH("[:digit:]{2}/[:digit:]{2}/[:digit:]{4} [:digit:]{2}:[:digit:]{2}",A1,1),16)

结果:

17/11/2016 09:00

解释:

要使其正常工作,请确保在工具中启用正则表达式 - >选项 - > LibreOffice Calc - >计算 - > Enable regular expressions in formulas

答案 1 :(得分:0)

一种替代但类似的方法,不需要公式并返回日期/时间索引而不是文本是使用查找来查找和替换(编辑菜单):

(.*)([0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2})(.*)

并检查Regular expressions下的Other options

有三个(组):我们想要的任何东西,我们想要的东西以及我们想要的任何东西,而且替换只是第二个捕获组,所以对于替换使用:

$2 

匹配的模式是任意数字字符{2} [0-9]后跟/,另外两个数字和正斜杠,四个数字,空格,另外两个数字{{1} 1}}和两个数字。

如果数据在ColumnA中,则查找/替换可能位于ColumnB中的副本上,以保留源数据。