r - R 上的正则表达式模式:n-dash、m-dash、括号
问题描述
我有两个正则表达式问题:
第 1 部分: 我有一个带有如下字符串的字符向量:
raw_strings <- c("hello world (abc)", "no hi world (abc(d))")
我想提取第一组括号内的内容,如下所示:
clean_strings <- c("abc", "abc(d)")
到目前为止,我一直在使用这个:
str_extract(raw_strings, "(?<=\\().+?(?=\\))")
但是,这会导致:
"abc" "abc(d"
如何更改表达式以保留最后的括号?
第 2 部分: 我有一些看起来像这样的字符串:
b_strings <- c("5.2 ko – word (longer word)", "5.9 ko - two words (long)")
我想要这个:
b_strings_clean <- c("word", "two words")
到目前为止,我已经这样做了:
str_extract(ac_meta, "\\s[^-–]*$")
结果是:
"word (longer word)" "two words (long)"
如何删除括号后的所有内容(包括括号)?
谢谢你。
解决方案
使用环视是否有效:
str_extract(raw_strings, '(?<=\\().*(?=\\))')
[1] "abc" "abc(d)"
str_extract(b_strings, '(?<=[–-]\\s).*(?=\\s\\()')
[1] "word" "two words"
推荐阅读
- ansible - 使用变量连接时未达到 Ansible 默认值
- python - 无法拟合超级简单数据。为什么?
- sql - SQL 仅为带有附加条件的最新 ID 创建列
- android - 无法通过 Gradle 启用 Android Lint 规则
- python - 使用 Python 从 XML 中获取值
- node.js - 等待 then() 完成
- java - 如何让 String 从方法中获取返回值?
- delphi - 为什么我会在 EOutOfResources 中泄漏内存?
- python - 如果 distance() < 20 行永远不会执行
- javascript - 使用javascript滚动时如何播放暂停iframe youtube视频