正则表达式从单词中的位置排除字符

时间:2017-09-13 12:12:52

标签: c++ regex

我一直试图匹配排除某个字符的模式。

让我们说给出的字符是" h ... o",我希望匹配所有不包含某个字符的单词,让我们说' c' 我尝试了很多不同的方法来解决这个问题。 其中一些包括,

"h^[c]^[c]^[c]o"

"h(!?c)(?!c)(!?c)o"

但这些都没有,有谁知道最新情况?

这点有点像作弊挂人,我把所有不包含猜测的单词都归还。

vector<string> getWords(string currentWord, char guess){
    for(auto& i: currentWord){
        string reg = ""
        if(i == '_'){
           string t = [[regex expression for acception any char except 'guess']]
           reg += t;
        }else{
          reg += i;  
        }
    }

  return getMatchingWords(mapOfWords, reg)
}

只接受所有不包含猜测的单词并不起作用,因为排除是indexbound

1 个答案:

答案 0 :(得分:1)

正则表达式h^[c]^[c]^[c]o不起作用,因为它会查找h,然后是^,后跟c,依此类推。

要取消字符集,必须将插入符^放在括号内,请参阅Negated Character Classes。在你的情况下,这将是

h[^c][^c][^c]o

现在它会找到h,后跟任何字符 c,然后是另一个字符 not c ,. ..