我正在努力编写一个与Perl兼容的正则表达式,在区分引用刚果共和国和刚果民主共和国的字符串方面将相当明智。我将在Rgrep函数的程序中使用此表达式,如果正则表达式与字符串匹配,则返回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
}

07-24 09:52