r - 我的 R 正则表达式匹配正确吗?
问题描述
我一直在努力使用正则表达式,最近写了一个我认为可以正常工作的表达式,但我不确定。我对任何花时间查看下面我的代码的人的问题 - 从理论上讲,它是否在做我想要做的事情?
目的:我正在查看数据集中的每一列,以识别包含以“pharmacy -”开头的字符串,后跟 13 种药物类型中的任何一种,并以括号结尾并带有数字的行。这里有些例子:
pharmacy - oxycodone/acetaminophen (3)
pharmacy - fentanyl (2.83)
pharmacy - hydromorphone (6.8)
我写的代码如下。我相信它正在工作,但如果有任何正则表达式专家可以查看并确认它正在做我认为它应该做的事情,我将不胜感激:
viz$med_2 <- apply(viz, 1, function(x)as.integer(any(grep("^pharmacy+[ -]+(codeine|oxycodone|fentanyl|hydrocodone|hydromophone|mathadone|morphine sulfate|oxycodone|oxycontin|roxicodone|tramadol|hydrocodone/acetaminophen|oxycodone/acetaminophen)+[ -]+[(]+[0-9]+", x))))
解决方案
不是专家,但你的表情看起来很棒,我可能会稍微修改一下:
^pharmacy\s*-\s*(codeine|oxycodone|fentanyl|hydrocodone|hydromophone|mathadone|morphine sulfate|oxycodone|oxycontin|roxicodone|tramadol|hydrocodone\/acetaminophen|oxycodone\/acetaminophen)\s*\(\s*[0-9]+(\.[0-9]+)?\s*\)$
如果您有兴趣,在这个演示中解释了表达式。
确保 R 需要转义。
正则表达式电路
jex.im可视化正则表达式:
推荐阅读
- r - 使 renderUI 成为 observeEvent 的输入
- pandas - 如何在 Pandas、Python 中对这些数据进行分组?
- vue.js - Vuex getter 实时更新 audio.currentTime 状态
- angular - 在 debounceTime 处于活动状态时获取所有更改
- postgresql - Postgres 会话被 PID 0 阻止(因为 .Net 核心事务?)
- asp.net - 为什么没有“IQueryable”的实现
.ToLookupAsync(x => x.Bar)' - git - 如何保护 git 中的 master 分支不被合并
- ace-editor - 如何在 ace 编辑器中使用 (.) 句点和 Ctrl_space 触发两个不同的自定义自动完成器
- laravel - 使用 Laravel 标记动态创建的复选框已选中
- xslt - 删除 xslt 中没有主体的节点