[英]how to use java scanner and regex for removing punctuation marks in input text, but not “i.e.”
[英]Regex R separate punctuation from text preserving “e.g.” and “i.e.”
我想将标点符号与R中的文本分开(在基于空格的标记化之前)。
命令: gsub("(?:\\b| )?([.,:;!?]+)(?: |\\b)?", " \\\\1 ", "Blabla, ie blabla...")
输出: "Blabla , i . e . blabla ... "
正如你所看到的...
被认为是一个单元,并没有被分解。 如何实现同样的事情ie
(及eg
)?
为了说清楚,所需的输出是: "Blabla , ie blabla ... "
如果您只对ie
感兴趣, eg
作为例外,您可以将它们放在列表中以跳过,并匹配所有其他标点符号:
gsub("\\b(?:e\\.g\\.|i\\.e\\.)(*SKIP)(*F)|(\\pP+)", " \\1 ",
"Blabla, i.e. e.g. blabla...",
perl=T)
## => [1] "Blabla , i.e. e.g. blabla ... "
说明 :
\\\\b(?:e\\\\.g\\\\.|i\\\\.e\\\\.)(*SKIP)(*F)
- 匹配整个单词eg
或ie
并跳过它们 |
- 要么 (\\\\pP+)
- 匹配并捕获组1中的一个或多个标点符号 要保持修剪,请使用
gsub("\\b(?:e\\.g\\.|i\\.e\\.)(*SKIP)(*F)|(?:\\b|\\h+)?(\\pP+)(?:\\b|\\h+)?", " \\1 ",
"Blabla, i.e. e.g. blabla...",
perl=T)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.