我正致力于匹配来自一个输入调查领域的字符串,该领域询问一个主要的研究领域。
至于“文科”一节,我想与各类文科学位相匹配,但具体不包括文科、烹饪艺术和语言艺术。
此代码正确地排除了“文科”,但我无法列出要排除的多个内容。
我在与perl兼容的regexp中使用grepl函数。
field_1_1_arts <-c("\\b(dance|ballet|design|film|(?<!liberal )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b")
data$field_1_1_arts <- grepl(field_1_1_arts,data$major_fields,ignore.case=TRUE, perl=TRUE)我试过:
#this allows both liberal and culinary to pass
field_1_1_arts <-c("\\b(dance|ballet|design|film|(?<!liberal )arts?|(?<!culinary )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b")
#this gives an invalid expression error
field_1_1_arts <-c("\\b(dance|ballet|design|film|(?<!(liberal|culinary) )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b") 发布于 2016-05-10 21:30:41
若要排除比libral更多的内容,只需在后面添加更多的负面查找,例如:
"\\b(dance|ballet|design|film|(?<!liberal )(?<!culinary )(?<!language )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^您也可以使用|
"\\b(dance|ballet|design|film|(?<!liberal |culinary |language )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^请参阅另一个演示
https://stackoverflow.com/questions/37149194
复制相似问题