首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的Diacritics和正则表达式

R中的Diacritics和正则表达式
EN

Stack Overflow用户
提问于 2015-07-26 17:37:14
回答 1查看 281关注 0票数 3

在R中,我有一个列,应该只包含一个单词。它是通过接受另一列的内容并使用regex只保留最后一个单词来创建的。但是,对于某些行,这不起作用,在这种情况下,R只是从第一列复制内容。这是我的R

代码语言:javascript
复制
df$precedingWord <- gsub(".*?\\W*(\\w+-?)\\W*$","\\1", df$leftContext, perl=TRUE)

precedingWord应该只包含一个单词。它是用正则表达式从leftContext中提取的。总体来说,这是很好的,,但是没有使用决定论。在leftContext中,有几行字母带有像éà这样的对话词。由于某种原因,R完全忽略了这些项,只需将整个内容复制到precedingWord。我觉得这很奇怪,因为正则表达式几乎不可能匹配整个事件-正如您可以看到的这里。在这个例子中,Test是leftContext,替换应该是*在Test前面。

正如您在上面的示例中所看到的,在线regex测试器中的输出与我获得的输出不同。我只是得到了leftContext的精确副本。这并不意味着在线测试器中的输出就是所需要的。现在,这个工具将带有对话词的字母视为非单词字符,因此它不会将其标记为我想要的输出。但实际上,我想威胁他们作为字字符,使他们有资格输出。

如果这是输入:

代码语言:javascript
复制
Un premier projet prévoit que l'établissement verserait 11 FF par an et par élève du secondaire et 30 FF par étudiant universitaire, une somme à évaluer et à  
Outre le prêt-à- 
And à 
Sur base de ces données, on cherchera à 
Ce sera encore le cas ce vendredi 19 juillet dans l'é

这就是我所期望的输出

代码语言:javascript
复制
à
prêt-à-
à
à
é

这是我已经拥有的大器

代码语言:javascript
复制
.*?\W*(\w+?-?)\W*$

我已经在我的项目中使用了stringi i,所以如果这提供了一个解决方案,我可以使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 07:24:45

在Perl类regex中,可以将任何Unicode字母与\p{L}速记类匹配,并且所有非Unicode字符都可以与反向类\P{L}匹配。请参阅regular-expressions.info

您可以将属于“信函”类别的单个字符与\p{L}匹配。您可以将不属于该类别的单个字符与\P{L}匹配。

因此,您可以使用的正则表达式是

代码语言:javascript
复制
df$precedingWord <- gsub(".*?\\P{L}*(\\p{L}+-?)\\P{L}*$","\\1", df$leftContext, perl=TRUE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31639977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档