我正在努力编写一个与Perl兼容的正则表达式,在区分引用刚果共和国和刚果民主共和国的字符串方面将相当明智。我将在R
的grep
函数的程序中使用此表达式,如果正则表达式与字符串匹配,则返回True,否则返回False。
我有时会用不同的顺序/方式写出我想识别的国家。例如:
我不想匹配的国家/地区具有类似的模式:
democratic republic of the congo
congo, democratic republic of the
dem rep of the congo
我想我正在寻找的是一种正则表达式,可以在rep和congo上匹配,但是只要字符串中有“dem”,就会失败。
有任何想法吗?谢谢!
最佳答案
这与您的第一个示例字符串匹配,而忽略了第二个
^(.(?<!dem))*congo(.(?<!dem))*$
在Perl中,
if ($subject =~ m/^(.(?<!dem))*congo(.(?<!dem))*$/m) {
# Successful match
} else {
# Match attempt failed
}