【问题标题】:Search all words with no vowels搜索所有没有元音的单词
【发布时间】:2014-07-07 09:57:26
【问题描述】:

我有一个文件“dic.txt”,我需要搜索所有不包含元音的单词。

$dic = gc "dic.txt"
$v = @("aeiou")
foreach ($line in $dic){$line | ?{$_ -notcontains $v}}

但它不起作用。

【问题讨论】:

    标签: regex powershell


    【解决方案1】:

    试试这个:

    $dic = gc "dic.txt"
    
    foreach ($line in $dic)
    {
        $line | ? { $_ -notmatch 'a|e|i|o|u' }
    }
    

    【讨论】:

    • 我忘记了“y”字母 :-)
    • @expirat001 很高兴为您提供帮助!
    【解决方案2】:

    如果每行有一个单词,如下所示:

    Select-String '(?i)^(?:(?![aeiou])[a-z-])+$' 'dic.txt'
    

    说明

    • (?i) 使其不区分大小写
    • ^ 锚断言我们位于字符串的开头
    • (?:(?![aeiou])[a-z]) 匹配一个不是aeiou 的字母
    • + 重复一次或多次
    • $ 锚断言我们在字符串的末尾

    【讨论】:

    • 也许不是 OP 的情况,但在像 spy-story 这样的“组合词”的情况下,它会失败。
    • @CB 你的意思是它匹配spy,因为它没有元音?你是对的,你也是对的,也许这正是 expirat001 想要的,也许不是。让我们知道,expirat0001。 :)
    • 不,我的意思是它匹配 spy-story 并且它有元音 o ...尝试一下小测试,你就会明白我的意思..
    • @CB 和story 不匹配,为什么会这样?见demo
    • @CB 你说得对。我相信你知道这一点,但为了记录,行为不是关于正则表达式,而是关于grep,它返回如果找到匹配项的整行,spy 是匹配项。假设我们每行有一个单词,更改正则表达式,使单词完全锚定。很好的收获,谢谢。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 2019-12-23
    • 2013-06-04
    • 1970-01-01
    • 2021-12-23
    • 2014-07-04
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多