3

我正在尝试解析一个短语并排除常用词。

例如,在短语“as the world turns”中,我想排除常用词“as”和“the”,只返回“world”和“turns”。

(\w+(?!the|as))

不工作。反馈表示赞赏。

4

2 回答 2

2

前瞻应该首先出现:

(\b(?!(the|as)\b)\w+\b)

我还添加了单词边界以确保它只匹配整个单词,否则它将无法匹配完整的单词“as”,但它会成功匹配该单词的字母“s”。

您可能还想考虑\w匹配的内容以及是否满足您的需求。如果您正在寻找英文单词,您可能对字母感兴趣,但对数字不感兴趣,并且您可能希望包含一些被 排除的标点符号\w,例如撇号。你可以尝试这样的事情(Rubular):

/(\b(?!(?:the|as)\b)[a-z'-]+\b)/i

为了更准确地匹配人类语言中的单词,您可以考虑使用自然语言解析库而不是正则表达式。

于 2010-09-04T19:39:49.790 回答
1

您应该使用单词边界来仅匹配整个单词。要么带有前瞻断言:

(\b(?!(?:the|as)\b)\w+\b)

或使用后视断言:

(\b\w+\b(?<!\b(?:the|as)))
于 2010-09-04T19:53:07.210 回答