R - 从管道分隔数据中查找和提取数据

时间:2016-03-29 13:07:13

标签: regex r

我的管道分隔下面有以下数据。

ABC|12345|H|QWA|**X**|DFC-FED| MULTIPLE ENTRY

PQR|67890|D|WAS|||**Y**|OKA| UPDATE

XYZ|34567|V|**Z**|SDC| QUESTION

ASD|23412|G|QAS|||**Y**|BUT| DELETE

AFD|65432|H|**X**|AVB| QUESTION

我想找到并提取管道分隔中存在的X,Y和Z(例如:| X |,| Y |,| Z |)。这里的挑战是它们并不存在于每个记录的相同位置。

我的输出应该是。

X
Y
Z
Y
X 

1 个答案:

答案 0 :(得分:1)

使用sub,

sub(".*(^|\\|)([XYZ])(\\||$).*", "\\2", x)

如果它应出现在两个管道|x|内,那么您可以使用以下正则表达式。

sub(".*\\|([XYZ])\\|.*", "\\1", x)

DEMO