2017-11-17 14 views
0

私は並べ替える必要がある性別の記述を持つ文字列を持っています。例えば、私は、次のしている場合は、文字列の男性/女性を区別するためのRの正規表現

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

私は「男女ともに」言うことを「MULTIPLE FEMALES」、およびstring2を言ってstring1を変更する必要があります。

gsubを使用すると、string1とは違ってstring2と認識される置換を書くことが難しいです.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) 

ないすべての文字列は「女性と女性」または「FEMALEとして表示されますので、私は、ワイルドカードのシーケンスを考慮する必要があり、男性は

など、1 FEMALE 12人の男性 『または『2X W FEMALE WITH B FEMALE』正規表現を使用して、ネストされた文字列に対処する方法上の任意のアイデア」を、時には彼らはとして表示しますか』?

+0

投稿の末尾付近に追加した追加の文字列に関して、あなたが探しているものが正確ではありませんが、おそらく '(?:(?! 1 \ D)\ d +)(あなたが探しているすべてのデータを取得するには?:\ s * [az] \ b \ s *)* \ s +)?(\ b(?:FE)? – ctwheels

答えて

0

私が投稿した直後、わかりました。

gsub(".*FEMALE.*\\b(M)ALE.*", "YEP", string1)を実行すると"FEMALE AND FEMALE"となり、gsub(".*FEMALE.*\\b(M)ALE.*", "YEP", string2)の結果が"YEP"となります。これはうまくいく。

+0

括弧は必要ありません。 – Sneftel

関連する問題