正则表达式:选择所有不以字母“p”开头的单词

正则表达式:选择所有不以字母“p”开头的单词

我必须使用正则表达式来选择所有不以字母“p”开头的单词。例如:

book, laptop, promise

因此,正则表达式必须仅选择book, laptop

我的公式不起作用,不知道为什么:

寻找:\b(?!p)\w+\b 或者 \b(?!p){1}\w+\b 或者 \b(?![p])\w+\b

我的公式还选择了一些单个字母,但不仅仅是单词\w+

答案1

您正在寻找的是一个否定字符类 ( [^])。

这会起作用:

\b[^p\s]\w+

解释:

\b[^p\s]\w+
\b          #word boundary, anchor to the beginning of a word
  [^ ]      #negated character class, matches any character except specified
    p       #literally "p"
     \s     #any whitespace character
      \w    #matches any word character
        +   #quantifies previous expression between 1 and infinity times

请注意,不幸的是,这并不匹配任何单个字符的单词,例如“I”。您可以将表达式修改为\b[^p\s]\w+|(?<=\s)\b\w\b

例子

答案2

您的正则表达式对我来说很好用,您只需匹配包含 1 个以上字母的单词:

  • Ctrl+F
  • 找什么:\b(?!p)\w{2,}
  • 查看 环绕
  • 查看 正则表达式
  • Find All in Current Document

解释:

\b          # word boundary, make sure we haven't a word character before
(?!p)       # negative lookahead, make sure we haven't the letter "p" after
\w{2,}      # 2 or more word character, make sure we don't match single letter

截屏:

在此处输入图片描述

相关内容