【发布时间】:2021-03-30 01:56:30
【问题描述】:
我正在为分析进行一些文本处理,但遇到了一个问题,我只需要删除括号中的“\n”(直接后跟一个单词)。我认为一个例子可以说明我想要做什么:
“\nMr. Johnson (spoke in \nRussian) (United Kingdom and \nNortheren Ireland) \n”
我需要 Johnson 先生之前的“\n”来完成另一项任务,因此我只对删除 \n 如果它在括号内感兴趣并保留其余文本,所以得到以下输出:
“\nMr. Johnson (spoke in Russian) (United Kingdom and Northeren Ireland) \n”
我的主要想法是制作某种正则表达式,可以在括号内捕获“\n”,并与 stringr 包中的 str_replace_all() 函数一起去掉它。 不过,我发现说起来容易做起来难,经过一些研究和时间,我想出了两种可能的方法,这两种方法都可以解决这个问题:
- 我想出了下面的正则表达式模式“(spoke in (\n).*?)”。 但是它会选择所有括号内的单词,而且它无法选择\n 没有出现在“spoke in”之后的情况...
- 创建条件正则表达式模式:使用以下来源获得灵感 https://www.youtube.com/watch?v=k4Be42-sf0s、https://www.regular-expressions.info/conditional.html 和 Regular expression with if condition 我尝试创建以下模式:“(?(?=((.*?) ))\n)”,但它似乎不起作用......
因此,如果你们中的任何正则表达式爱好者可以帮助我解决这个问题,我会在这里? 我使用的是 R,因此使用的是 ICU 正则表达式引擎。
一切顺利 埃里克
【问题讨论】:
-
你好维克托!非常感谢您的详细解答!!!所有最好的埃里克:-D