有一个字符串:
python php ruby javascript jsonp perhapsphpisoutdated
我想返回包含p
但不包含ph
的字词
如:
[ 'python', 'javascript', 'jsonp' ]
怎么写呢?
var result = web_development.match(/\b((?!ph)\w)+\b/g);
到目前为止,我不知道如何写更多,请帮助我!
答案 0 :(得分:0)
这应该可以解决问题:
+?
说明:OR匹配前的左侧部分在没有' p'的情况下工作。正确的部分首先匹配一个没有' p'的可选前缀,然后是任何数量的' p',然后是' h'然后是没有' ; p&#39 ;;最后一个可选的' p'没有任何事情可以发生。
答案 1 :(得分:0)
在python中,它可以像这样完成
import re
sample_string = "python php ruby javascript jsonp perhapsphpisoutdated"
regex=r"^((?!ph).)*$"
print [word for word in sample_string.split() if re.search(regex,word)]
答案 2 :(得分:0)
选择以下方法之一:
使用String.replace
的第一种方法(用事先替换ph
序列与空字符串""
的单词)和String.match
函数(以匹配其余的单词如果包含p
个字符):
var web_development = "python php ruby javascript jsonp perhapsphpisoutdated",
result = web_development
.replace(/\b[a-z]+?ph([a-z]+)?\b|\bph[a-z]+?\b/g, "")
.match(/\b([a-z]+?)?[p]([a-z]+?)?\b/g);
console.log(result); // ["python", "javascript", "jsonp"]
使用String.split
和Array.filter
函数的第二种方法:
result = web_development.split(" ").filter(function(word){
return word.indexOf("p") !== -1 && word.indexOf("ph") === -1;
});
console.log(result); // ["python", "javascript", "jsonp"]
答案 3 :(得分:0)
var reg = /\b(?=\w*p)(?!\w*ph)\w+\b/g;
console.log(web_development.match(reg));
最后我得到了解决方案......很难解决问题