我有需要理清的性别描述字符串 . 例如,如果我有以下内容,
string1 = "FEMALE AND FEMALE"
string2 = "FEMALE AND MALE"
我需要将 string1
更改为"MULTIPLE FEMALES",将 string2
更改为"BOTH MALE AND FEMALE" .
使用 gsub
,我在编写一个将 string2
识别为与 string1
不同的替换时遇到问题,因为MALE嵌套在FEMALE中 . 首先使用"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个男性”或“B女性2X W女性”等 .
有关如何使用正则表达式处理嵌套字符串的任何想法?
1 回答
好的,我发布后就知道了 .
运行
gsub(".*FEMALE.*\\b(M)ALE.*", "YEP", string1)
会产生"FEMALE AND FEMALE"
,而gsub(".*FEMALE.*\\b(M)ALE.*", "YEP", string2)
会产生"YEP"
. 这样可行 .