查找所有以结尾的单词(包括紧缩词)

时间:2019-08-15 02:07:28

标签: regex grep

我正在尝试查找文档中的所有非数字单词,以便列出它们并计算它们出现的频率。在这种情况下,“单词”具有以下条件:

  • 's排除在诸如John's->匹配John的所有格中
  • 包括you'reisn't等收缩->匹配you'reisn't
  • 使用连字符(dog-friendly->连字符分隔单词匹配dogfriendly

我可以匹配单词并用-分割带连字符的单词

\w+

匹配单词,并忽略's

\w*+(?<!'s)

(尽管这会引起宫缩)

如何结合这两种模式以匹配我的要求?我需要使用非固定长度的lookbehinds吗?

我能想到的最好的方法是:

(?<!')\w+

但是它不能按收缩要求工作

https://regex101.com/r/rRhONT/3

1 个答案:

答案 0 :(得分:3)

我认为此正则表达式适合您:

\w+('\w+)?(?<!('s))

https://regex101.com/r/Q1J46N/2