首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex:刚果共和国,但不是刚果民主共和国

Regex:刚果共和国,但不是刚果民主共和国
EN

Stack Overflow用户
提问于 2012-06-01 17:09:01
回答 4查看 161关注 0票数 2

我正在努力编写一个与perl兼容的正则表达式,这个正则表达式在区分引用刚果共和国和刚果民主共和国的字符串方面将相当聪明。我将在Rgrep函数的程序中使用这个表达式,如果正则表达式与字符串匹配,否则返回True。

我感兴趣的国家有时可以用不同的顺序/方式书写。例如:

刚果

共和国

刚果共和国

刚果共和国

刚果共和国

我不想与之相匹配的国家也有类似的模式:

代码语言:javascript
复制
democratic republic of the congo

congo, democratic republic of the

dem rep of the congo

我想,我要找的是一个在rep和刚果上匹配的正则表达式,但是在字符串中有一个"dem“的时候,它就会失败。

有什么想法吗?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-01 17:20:07

这与您的第一个示例字符串匹配,并忽略第二个示例字符串。

代码语言:javascript
复制
^(.(?<!dem))*congo(.(?<!dem))*$

在Perl中,这变成

代码语言:javascript
复制
if ($subject =~ m/^(.(?<!dem))*congo(.(?<!dem))*$/m) {
    # Successful match
} else {
    # Match attempt failed
}
票数 1
EN

Stack Overflow用户

发布于 2012-06-01 17:20:20

代码语言:javascript
复制
> countries <- scan(what="character")
1:     'republic of congo'
2:     'republic of the congo'
3:     'congo, republic of the'
4:     'congo, republic'
5: 'democratic republic of the congo'
6: 'congo, democratic republic of the'
7: 'dem rep of the congo'
8: 
Read 7 items
> grep("dem", countries, ignore.case=TRUE,value=TRUE, invert=TRUE)
[1] "republic of congo"      "republic of the congo"  "congo, republic of the" "congo, republic"     
票数 3
EN

Stack Overflow用户

发布于 2012-06-01 17:25:23

我不知道R,但是这个正则表达式将与您所描述的完全匹配,一个在repcongo__上匹配的正则表达式,但是在字符串中任何时候都会失败

代码语言:javascript
复制
/^(?=.*rep)(?=.*congo)(?!.*dem)/i;

它还可以根据需要对示例字符串进行筛选。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10854603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档