r - 正则表达式中的负前瞻以排除 R 中的百分比 (%)
问题描述
我希望提取带有任何小数的数字(小数两边至少有一个数字),而不是后跟百分比的模式。因此,我相信我需要一个负前瞻(这样它就可以看到数字后面是否有百分号)。
为了清楚起见,我想提取"123.123"
,但不想提取"123.123%"
我尝试了十几种语法安排,但找不到有效的。这成功地提取了十进制模式。
c("123.123%", "123.123") %>% str_extract_all(., "\\d+\\.\\d+")
但我想对其进行调整以仅返回第二项(因为第一项包含百分号。
我尝试了以下各种组合:
c("123.123%", "123.123") %>% str_extract_all(., "\\d+\\.\\d+(!?=%)")
c("123.123%", "123.123") %>% str_extract_all(., "\\d+\\.\\d+[!?%]")
c("123.123%", "123.123") %>% str_extract_all(., "\\d+\\.\\d+!?%")
c("123.123%", "123.123") %>% str_extract_all(., "\\d+\\.\\d+!?\\%")
c("123.123%", "123.123") %>% str_extract_all(., "\\d+\\.\\d+(!?=\\%)")
# etc
解决方案
我们可以通过在模式中字符串的开头和结尾添加^
and来解决$
c("123.123%", "123.123") %>%
str_extract_all(., "^[0-9]+\\.[0-9]+$")
推荐阅读
- python - 如何修复访问被拒绝,youtube-dl 更新程序
- kubernetes - 如何获取所有 Kubernetes 对象详细信息
- c++ - 如何在使用 Ctrl-c 终止时调用对象的析构函数?
- ms-word - 使用 IF 语句自动填充 Word 2013 中的复选框
- python - 需要根据另一列的条件添加一行
- python - 如何从数据框中删除表情符号?
- c# - 如何根据变量编号对列表进行排序
- node.js - 在 StackBlitz 上使用 Node.js?
- python - 将数字列表分成两组,使得一组中的数字与另一组中的数字没有任何共同因素
- c++ - copy(...) 和 copy(seq, ...) 之间的关系