Regex 用于具有5000个字段的行的配置单元正则表达式serde

Regex 用于具有5000个字段的行的配置单元正则表达式serde,regex,hadoop,hive,Regex,Hadoop,Hive,我们得到的行如下所示: aa |-| bb |-| cc |-| 我们要提取由|-|分隔的字段。我知道一个解决办法是: CREATE TABLE rating_regex( field1 string, field2 string, field3 string) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH serdeproperties("input.regex" = "(.+)\\|\\

我们得到的行如下所示:

aa |-| bb |-| cc |-|
我们要提取由|-|分隔的字段。我知道一个解决办法是:

CREATE TABLE rating_regex(
field1 string, field2 string, field3 string) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH serdeproperties("input.regex" = "(.+)\\|\\-\\|(.+)\\|\\-\\|(.+)\\|\\-\\|",
"output.format.string" = "%1$s %2$s %3$s")
STORED AS TEXTFILE;
但是如果我们得到的不是三个字段而是5000呢?如何编写正则表达式模式而不重复(+++)\\\-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 5000次

^(?:(?:.+?)\|\-\|(?:\s|$)){3}$
试试这个。参见演示。您可以根据需要将其扩展到
500