r - 正则表达式从列表中查找单词,当特定单词之前没有出现 3 个单词时
问题描述
我想从列表中找到特定单词的所有匹配项,但是当特定的另一个单词没有出现在之前的 3 个单词的范围内时。
例如:
找出文本中出现单词“good|best|better”但单词“no|not|none”在 3 个单词之前没有出现的所有时间。
我尝试过这样的事情:
(?<!\sno|\snot(\s|\s\w\s|\s\w\s\w\s))(\bgood\b|\bbest\b|\bbetter\b)
但它不起作用。
解决方案
您可以在选项中使用此正PCRE
则表达式:R
perl=TRUE
\b(?:not?|none)(?:\s+\S+){0,2}\s+(good|best|better)\b(*SKIP)(*F)|\b(?:good|best|better)\b
在您的R
代码中使用:
gregexpr("\\b(?:not?|none)(?:\\s+\\S+){0,2}\\s+(good|best|better)\\b(*SKIP)(*F)|\\b(?:good|best|better)\\b", mystr, perl=TRUE)
在PCRE
中,动词(*SKIP)(*F)
用于失败和跳过我们不想匹配的匹配。
推荐阅读
- asp.net-core - ASP.NET Core - MVC - 视图中的模型变量 - 空异常
- reactjs - 如何将 React 应用程序部署到全球网络?
- home-automation - 有没有办法使用jsonpath从这个rest api中具体引用一个id?
- python - tkinter 画布大小和导航工具栏问题
- android - 如何在 Kotlin 中为我的应用创建视频背景?setVideoURI 和 setVideoPath 不起作用
- swashbuckle - 如何在 Swashbuckle 中抑制代码参数
- http - 与 HTTP 的持久(基于推送)通信
- java - JsonPath 在 Spring Cloud Data Flow 过滤器组件中无法正常工作
- highcharts - Highcharts 导出服务器布局算法错误
- java - Java 8 JVM 堆大小不断缩小