说我有一个字符串,例如以下。

x <- 'The world is at end. What do you think?   I am going crazy!    These people are too calm.'

我只需要在标点符号!?.和以下空格上进行拆分,并保留标点符号即可。

尽管这样可以删除标点符号,但在拆分部分中保留前导空格
vec <- strsplit(x, '[!?.][:space:]*')

我如何拆分句子并保留标点符号?

最佳答案

您可以使用PCRE开启 perl=TRUE 并使用向后隐式断言。

strsplit(x, '(?<![^!?.])\\s+', perl=TRUE)

正则表达式:
(?<!          look behind to see if there is not:
 [^!?.]       any character except: '!', '?', '.'
)             end of look-behind
\s+           whitespace (\n, \r, \t, \f, and " ") (1 or more times)

Live Demo

关于regex - R字符串在拆分时删除标点符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19720144/

10-12 13:56