2017-11-17 78 views
0

我有我需要理清的性别描述的字符串。举例来说,如果我有以下,R中的正则表达式来区分字符串中的男性/女性

string1 = "FEMALE AND FEMALE" 
string2 = "FEMALE AND MALE" 

我需要改变string1说“多名女性”,并string2说“男性和女性”。

使用gsub,由于MALE嵌套在FEMALE中,因此我无法编写识别string2string1不同的替换。使用“YEP”作为一个确认字符串第一,我已经试过,没有运气以下,

gsub(".*FEMALE.*MALE.*", "YEP", string1) 
gsub(".*FEMALE.*[^M]ALE.*", "YEP", string1) 
gsub(".*FEMALE.*[^\b]MALE.*", "YEP", string1) 
gsub(".*FEMALE.*(^\bMALE).*", "YEP", string1) 
gsub(".*FEMALE.*MALE.*", "YEP", string2) 
gsub(".*FEMALE.*[^M]ALE.*", "YEP", string2) 
gsub(".*FEMALE.*[^\b]MALE.*", "YEP", string2) 
gsub(".*FEMALE.*(^\bMALE).*", "YEP", string2) 

我需要考虑通配符的顺序,因为不是所有的字符串将显示为“女性与女性”或“女性,男性“,有时他们显示为”1女12 MALES“或”B女2X女“等

任何想法如何处理嵌套字符串使用正则表达式?

+0

不是很确定你在寻找附加字符串的方式,你添加在你的文章的底部附近,但你可以使用像'(?:(((??1 \ D)\ d +)( ?:\ s * [az] \ b \ s *)* \ s +)?(\ b(?:FE)?MALES?\ b)'获取您要查找的所有数据。 – ctwheels

回答

0

好吧,我在发布后立刻就明白了这一点。

运行gsub(".*FEMALE.*\\b(M)ALE.*", "YEP", string1)结果为"FEMALE AND FEMALE",而gsub(".*FEMALE.*\\b(M)ALE.*", "YEP", string2)结果为"YEP"。所以这个工作。

+0

不需要括号。 – Sneftel

相关问题