如何使用 REGEXTRACT 提取两个字符串之间的某些字符
How to use REGEXTRACT to extract certain characters between two strings
我正在尝试提取不同字符之间的人名。例如,单元格包含此信息
PATIENT: 2029985 - COLLINS, JUNIOR .
PATIENT: 1235231-02 - JERRY JR, PATRICK .
PATIENT: 986435--EXP-- - JULIUS, DANIEL .
PATIENT: 2021118-02 - DRED-HARRY, KEVIN .
我的目标是使用一个 REGEXTRACT 公式获得以下内容:
COLLINS, JUNIOR
JERRY JR, PATRICK
JULIUS, DANIEL
LOVE ALSTON, BRENDA
到目前为止,我想出了公式:
=ARRAYFORMULA(REGEXEXTRACT(B3:B, "-(.*)\."))
其中 B3 包含第一个信息
使用该公式,我得到:
COLLINS, JUNIOR
02 - JERRY JR, PATRICK
02 - LOVE-ALSTON, BRENDA
-EXP-- - JULIUS, DANIEL
02 - DRED-HARRY, KEVIN
我设法记下了第一个名字,但我该如何提取其余的名字。
您可以使用
=ARRAYFORMULA(REGEXEXTRACT(B3:B, "\s-\s+([^.]*?)\s*\."))
见regex demo。 详情:
\s-\s+
- 一个空格,-
,一个或多个空格
([^.]*?)
- 第 1 组:除 .
之外的零个或多个字符尽可能少
\s*
- 零个或多个空格
\.
- 一个 .
字符。
第一个解决方案:使用您显示的示例,请尝试使用正则表达式。
^PATIENT:.*-\s+([^.]*?)\s*\.
或尝试关注Google-sheet论坛:
=ARRAYFORMULA(REGEXEXTRACT(B3:B, "^PATIENT:.*-\s+([^.]*?)\s*\."))
解释: 检查 line/value 是否从 PATIENT 开始,然后是 :
直到 -
(这里使用贪心机制),后面跟着空格(出现 1 次或多次)。然后创建一个且唯一的捕获组,其中包含 .
(dot) 之前的所有内容,使其成为非贪婪的,关闭捕获组,后跟空格(0 次或多次出现)后跟文字点。
第二个解决方案:在正则表达式中使用惰性匹配方法,请尝试使用正则表达式。
.*?\s-\s([^.]*?)\s*\.
Google-sheet公式如下:
=ARRAYFORMULA(REGEXEXTRACT(B3:B, ".*?\s-\s([^.]*?)\s*\."))
我正在尝试提取不同字符之间的人名。例如,单元格包含此信息
PATIENT: 2029985 - COLLINS, JUNIOR .
PATIENT: 1235231-02 - JERRY JR, PATRICK .
PATIENT: 986435--EXP-- - JULIUS, DANIEL .
PATIENT: 2021118-02 - DRED-HARRY, KEVIN .
我的目标是使用一个 REGEXTRACT 公式获得以下内容:
COLLINS, JUNIOR
JERRY JR, PATRICK
JULIUS, DANIEL
LOVE ALSTON, BRENDA
到目前为止,我想出了公式:
=ARRAYFORMULA(REGEXEXTRACT(B3:B, "-(.*)\."))
其中 B3 包含第一个信息
使用该公式,我得到:
COLLINS, JUNIOR
02 - JERRY JR, PATRICK
02 - LOVE-ALSTON, BRENDA
-EXP-- - JULIUS, DANIEL
02 - DRED-HARRY, KEVIN
我设法记下了第一个名字,但我该如何提取其余的名字。
您可以使用
=ARRAYFORMULA(REGEXEXTRACT(B3:B, "\s-\s+([^.]*?)\s*\."))
见regex demo。 详情:
\s-\s+
- 一个空格,-
,一个或多个空格([^.]*?)
- 第 1 组:除.
之外的零个或多个字符尽可能少\s*
- 零个或多个空格\.
- 一个.
字符。
第一个解决方案:使用您显示的示例,请尝试使用正则表达式。
^PATIENT:.*-\s+([^.]*?)\s*\.
或尝试关注Google-sheet论坛:
=ARRAYFORMULA(REGEXEXTRACT(B3:B, "^PATIENT:.*-\s+([^.]*?)\s*\."))
解释: 检查 line/value 是否从 PATIENT 开始,然后是 :
直到 -
(这里使用贪心机制),后面跟着空格(出现 1 次或多次)。然后创建一个且唯一的捕获组,其中包含 .
(dot) 之前的所有内容,使其成为非贪婪的,关闭捕获组,后跟空格(0 次或多次出现)后跟文字点。
第二个解决方案:在正则表达式中使用惰性匹配方法,请尝试使用正则表达式。
.*?\s-\s([^.]*?)\s*\.
Google-sheet公式如下:
=ARRAYFORMULA(REGEXEXTRACT(B3:B, ".*?\s-\s([^.]*?)\s*\."))