这应该是一个相当微不足道的问题,但我已经花了很长时间而且我无法做到 -
如果这是我的字符串 -
"this/DT word/NN is/VBZ a/DT dot/NN ./."
我想提取/
的直接邻居,无论是单词,逗号还是句号。
(\\w+)/(\\w+)
给出/
之后的n之前的单词,但不是句号等。
我试过这个 - "\\.\\/\\.|(\\w+)/(\\w+)"
抓住了句号,但似乎没有用。
有人可以帮忙。(我在R中尝试这个)
谢谢!
答案 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)