我正在尝试解析一个短语并排除常用词。
例如,在短语“as the world turns”中,我想排除常用词“as”和“the”,只返回“world”和“turns”。
(\w+(?!the|as))
不工作。反馈表示赞赏。
我正在尝试解析一个短语并排除常用词。
例如,在短语“as the world turns”中,我想排除常用词“as”和“the”,只返回“world”和“turns”。
(\w+(?!the|as))
不工作。反馈表示赞赏。
前瞻应该首先出现:
(\b(?!(the|as)\b)\w+\b)
我还添加了单词边界以确保它只匹配整个单词,否则它将无法匹配完整的单词“as”,但它会成功匹配该单词的字母“s”。
您可能还想考虑\w
匹配的内容以及是否满足您的需求。如果您正在寻找英文单词,您可能对字母感兴趣,但对数字不感兴趣,并且您可能希望包含一些被 排除的标点符号\w
,例如撇号。你可以尝试这样的事情(Rubular):
/(\b(?!(?:the|as)\b)[a-z'-]+\b)/i
为了更准确地匹配人类语言中的单词,您可以考虑使用自然语言解析库而不是正则表达式。
您应该使用单词边界来仅匹配整个单词。要么带有前瞻断言:
(\b(?!(?:the|as)\b)\w+\b)
或使用后视断言:
(\b\w+\b(?<!\b(?:the|as)))