Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex R-从管道分隔的数据中查找和提取数据_Regex_R - Fatal编程技术网

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

Regex R-从管道分隔的数据中查找和提取数据,regex,r,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 |)。这里的挑战是,它们

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

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 
使用sub

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

如果它应该出现在两个管道中
|x |
,则可以使用下面的正则表达式

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

你好。你试过了吗?如果你发布一些代码会更好,你将更有可能得到答案。非常感谢Avinash!!我不熟悉R字符串处理。如果数据中没有X、Y或Z,我需要用NA更新它。你能帮我一下吗。你必须在字符串中加上NA吗?是的。假设我的数据是ABC | 34567 | V | SDC |问题,它不包含| X |或| Y |或| Z |,我需要将输出更新为不适用(NA)。运行上述命令后,您可以很容易地找到没有X或Y或Z的行,您可以将其转换为NA。@parthasarathybalaman您正在寻找的是
grep