正则表达式匹配单词或点

时间:2015-10-19 19:41:23

标签: regex r

这应该是一个相当微不足道的问题,但我已经花了很长时间而且我无法做到 -

如果这是我的字符串 -

"this/DT word/NN is/VBZ a/DT dot/NN ./."

我想提取/的直接邻居,无论是单词,逗号还是句号。

(\\w+)/(\\w+)给出/之后的n之前的单词,但不是句号等。

我试过这个 - "\\.\\/\\.|(\\w+)/(\\w+)"抓住了句号,但似乎没有用。

有人可以帮忙。(我在R中尝试这个)

谢谢!

2 个答案:

答案 0 :(得分:2)

请注意,\w仅匹配字母,数字和下划线。点/句点属于标点符号,可以使用类似Perl的\p{P}或POSIX类[:punct:]捕获。因此,从理论上讲,你可以使用类似([\\w[:punct:]]+)/([\\w[:punct:]]+)(甚至更多POSIXish ([[:alpha:][:punct:]]+)/([[:alpha:][:punct:]]+))的东西,但我想在/两侧匹配非空白字符最适合你的目的。 / p>

以下是(\\S+)/(\\S+)正则表达式的替代方法:

([^\\s]+)/([^\\s]+)

请参阅regex demo

[^\s]表示除空白以外的任何符号。请注意,\S表示*任何非空白字符。

如果/两侧都没有非空白字符,我相信

([^\\s]*)/([^\\s]*)

(\\S*)/(\\S*)

将更适合您,因为*将匹配 0或更多字符

请参阅another demo

答案 1 :(得分:1)

您可以使用此正则表达式

"(\\S+)/(\\S+)"

即。在/之前和之后抓取每个非空格文本。

RegEx Demo