【问题标题】:Regex excluding characters from positions in words正则表达式从单词中的位置排除字符
【发布时间】:2018-02-22 03:34:09
【问题描述】:

我一直在尝试匹配不包括某个字符的模式。

假设给定的字符是“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)
}

只接受所有不包含猜测的单词在这里不起作用,因为排除是索引绑定的

【问题讨论】:

  • 蛮力在这里并没有真正的帮助:) 你认为一个词是什么?你如何定义这些“词”的界限?我问是因为. 不是单词字符(从正则表达式的角度来看)
  • 它来自字典
  • 能否提供一个代码 sn-p 来说明问题?一个MCVE (minimal complete verifiable example)
  • 编辑了问题
  • 抱歉,这不是说您遍历字符串并检查某些特定子字符串是否存在guess 字符吗?您可以检查Check if a string contains a string in C++ 而不是查找正则表达式。

标签: c++ regex


【解决方案1】:

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

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

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

现在它寻找h,后跟任意字符not c,后跟另一个字符not c, ...

【讨论】:

    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 2016-05-09
    • 2021-01-02
    • 2019-04-30
    • 2022-06-24
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    相关资源
    最近更新 更多