使用 Regexextract 从 Google 工作表中的文本中提取日、月、2 位年份
Extracting day,month,2-digits year from text in Google Sheets using Regexextract
非常感谢任何帮助。
文本是这样的 11jun2018/M
, 16JUL1976/F
(出生日期+男性或女性)
我需要得到下一个结果:11jun18
, 16jul76
.
我试过 \d{2}\w{3}\d{4}
结果是 11jun2018
我也发现 \d{2}(\d{2})
结果是 18
,但我不知道如何将这两个结合起来正则表达式。
因为当我联合时,我得到了以前的结果(只有18
,而不是11jun18
)。
也希望获得一些针对傻瓜的正则表达式指南
您可以使用
=LOWER(REGEXREPLACE(A1,"^(\d{2}[a-zA-Z]{3})\d{2}(\d{2})/[MF]$", ""))
如果没有匹配必须有一个空结果在末尾添加|.+
:
=LOWER(REGEXREPLACE(A1,"^(\d{2}[a-zA-Z]{3})\d{2}(\d{2})/[MF]$|.+", ""))
这里,
^
- 匹配字符串的开头
(\d{2}[a-zA-Z]{3})
- 将 2 个数字和 3 个字母捕获到组 1 (</code>)</li>
<li><code>\d{2}
- 匹配两个数字
(\d{2})
- 将两个数字捕获到第 2 组 (</code>)</li>
<li><code>/
- 斜杠
[MF]
- M
或 F
匹配
$
- 字符串结尾
|.+
- 或匹配任何其他字符串,尽可能多地匹配除换行字符以外的 1 个或多个字符。
见截图:
你可以试试:
使用的公式:
=ARRAYFORMULA(LEFT(REPLACE(LOWER(FILTER(A1:A,A1:A<>"")),6,2,),7))
Tnx to Wiktor Stribiżew 公式我尝试了更多的东西,在这里我想到了:
1.I 从一开始就做了我想要的,将我的 2 个正则表达式:\d{2}\w{3}\d{4}
和 \d{2}(\d{2})
合并为 =REGEXEXTRACT(A1,"(\d{2}\w{3})\d{2}(\d{2})")
但是它将答案写入了 2 个单元格(B51,C51),如您在屏幕截图中所见。
-我想提醒一下,C51单元格不包含任何公式。
我们可以将 B51 中的公式分成两个正则表达式并将它们连接起来。
像这样=REGEXEXTRACT(A1,"\d{2}\w{3}")®EXEXTRACT(A1,"\d{2}(\d{2})")
=REGEXEXTRACT(A1,"\d{2}\w{3}")
结果为 06JUL,=REGEXEXTRACT(A1,"\d{2}(\d{2})")
结果为 77
请参阅下面 Google 表格的 Link
2.If你不喜欢第一种方法我们也可以这样做:
由于我们从 REGEXEXTRACT 函数中获取数组响应,我们可以使用函数 JOIN 或 TEXTJOIN
=JOIN("",REGEXEXTRACT(A1,"(\d{2}\w{3})\d{2}(\d{2})"))
我决定最好将 link 提供给 Google Sheet,因为他们有兴趣检查我上面提到的解决方案,而不是制作大量屏幕截图。
非常感谢任何帮助。
文本是这样的 11jun2018/M
, 16JUL1976/F
(出生日期+男性或女性)
我需要得到下一个结果:11jun18
, 16jul76
.
我试过 \d{2}\w{3}\d{4}
结果是 11jun2018
我也发现 \d{2}(\d{2})
结果是 18
,但我不知道如何将这两个结合起来正则表达式。
因为当我联合时,我得到了以前的结果(只有18
,而不是11jun18
)。
也希望获得一些针对傻瓜的正则表达式指南
您可以使用
=LOWER(REGEXREPLACE(A1,"^(\d{2}[a-zA-Z]{3})\d{2}(\d{2})/[MF]$", ""))
如果没有匹配必须有一个空结果在末尾添加|.+
:
=LOWER(REGEXREPLACE(A1,"^(\d{2}[a-zA-Z]{3})\d{2}(\d{2})/[MF]$|.+", ""))
这里,
^
- 匹配字符串的开头(\d{2}[a-zA-Z]{3})
- 将 2 个数字和 3 个字母捕获到组 1 (</code>)</li> <li><code>\d{2}
- 匹配两个数字(\d{2})
- 将两个数字捕获到第 2 组 (</code>)</li> <li><code>/
- 斜杠[MF]
-M
或F
匹配$
- 字符串结尾|.+
- 或匹配任何其他字符串,尽可能多地匹配除换行字符以外的 1 个或多个字符。
见截图:
你可以试试:
使用的公式:
=ARRAYFORMULA(LEFT(REPLACE(LOWER(FILTER(A1:A,A1:A<>"")),6,2,),7))
Tnx to Wiktor Stribiżew 公式我尝试了更多的东西,在这里我想到了:
1.I 从一开始就做了我想要的,将我的 2 个正则表达式:\d{2}\w{3}\d{4}
和 \d{2}(\d{2})
合并为 =REGEXEXTRACT(A1,"(\d{2}\w{3})\d{2}(\d{2})")
但是它将答案写入了 2 个单元格(B51,C51),如您在屏幕截图中所见。
-我想提醒一下,C51单元格不包含任何公式。
我们可以将 B51 中的公式分成两个正则表达式并将它们连接起来。
像这样=REGEXEXTRACT(A1,"\d{2}\w{3}")®EXEXTRACT(A1,"\d{2}(\d{2})")
=REGEXEXTRACT(A1,"\d{2}\w{3}")
结果为 06JUL,=REGEXEXTRACT(A1,"\d{2}(\d{2})")
结果为 77
请参阅下面 Google 表格的 Link
2.If你不喜欢第一种方法我们也可以这样做:
由于我们从 REGEXEXTRACT 函数中获取数组响应,我们可以使用函数 JOIN 或 TEXTJOIN
=JOIN("",REGEXEXTRACT(A1,"(\d{2}\w{3})\d{2}(\d{2})"))
我决定最好将 link 提供给 Google Sheet,因为他们有兴趣检查我上面提到的解决方案,而不是制作大量屏幕截图。