正则表达式 - 多个负面回顾
Regex - Multiple Negative Lookbehinds
我正在匹配来自询问主要研究领域的写入调查字段的字符串。
对于 "Arts" 部分,我想匹配所有类型的艺术学位,但明确排除文科、烹饪艺术和语言艺术。
此代码正确排除了 "liberal arts",但我无法列出多个要排除的内容。
我在 R 中使用 grepl 函数和 perl 兼容的正则表达式。
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")
要排除超过 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"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我正在匹配来自询问主要研究领域的写入调查字段的字符串。
对于 "Arts" 部分,我想匹配所有类型的艺术学位,但明确排除文科、烹饪艺术和语言艺术。
此代码正确排除了 "liberal arts",但我无法列出多个要排除的内容。
我在 R 中使用 grepl 函数和 perl 兼容的正则表达式。
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")
要排除超过 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"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^