正则表达式中否定前瞻的任何替代?
Any substitution for the negative lookahead in regular expression?
我正在使用正则表达式在 BigQuery 中提取一些国家/地区数据。而且我不知道如何从中提取我想要的文本。这是我使用的示例记录。
country
China Anhui Univ Chinese Med, Affiliated Hosp 1, Expt Ctr Clin Res, Sci Res Dept, 117 Meishan Rd, Hefei 230031, Anhui, 12, Peoples R China
Meluna Res, Geldermalsen, Netherlands; [Wiegant, Frederik Anton Clemens] Univ Utrecht, Utrecht, Netherlands
我想从文本中提取最后一个逗号后跟的单词 Peoples R China
、Netherlands
,所以我使用负前瞻来提取它们。
(, )(?!.*\b\b)((\w*\s?){3})
但 BigQuery 似乎不支持先行表达式,因为它们只支持 RE2。
有什么方法可以在不使用先行表达式的情况下提取国家/地区名称吗?
您可以使用
,\s*([^,]*)$
参见regex demo。模式匹配
,
- 逗号
\s*
- 零个或多个空格
([^,]*)
- 捕获第 1 组:逗号以外的任何零个或多个字符
$
- 字符串结尾。
我正在使用正则表达式在 BigQuery 中提取一些国家/地区数据。而且我不知道如何从中提取我想要的文本。这是我使用的示例记录。
country |
---|
China Anhui Univ Chinese Med, Affiliated Hosp 1, Expt Ctr Clin Res, Sci Res Dept, 117 Meishan Rd, Hefei 230031, Anhui, 12, Peoples R China |
Meluna Res, Geldermalsen, Netherlands; [Wiegant, Frederik Anton Clemens] Univ Utrecht, Utrecht, Netherlands |
我想从文本中提取最后一个逗号后跟的单词 Peoples R China
、Netherlands
,所以我使用负前瞻来提取它们。
(, )(?!.*\b\b)((\w*\s?){3})
但 BigQuery 似乎不支持先行表达式,因为它们只支持 RE2。 有什么方法可以在不使用先行表达式的情况下提取国家/地区名称吗?
您可以使用
,\s*([^,]*)$
参见regex demo。模式匹配
,
- 逗号\s*
- 零个或多个空格([^,]*)
- 捕获第 1 组:逗号以外的任何零个或多个字符$
- 字符串结尾。