2015-10-19 183 views
2

這應該是一個相當瑣碎的問題,但我花了相當長的一段時間,林無法做到這一點 -正則表達式匹配一個字或一個點

如果這是我的字符串 -

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

我想要提取/的直接鄰居,無論是單詞,逗號還是句號。

(\\w+)/(\\w+)給出n之前的話/之後,但不是句號等

我想這一點 - "\\.\\/\\.|(\\w+)/(\\w+)"爲抓住句號,但似乎並沒有工作。

有人可以幫助請。

謝謝(我R中嘗試這一點)!

+0

我很困惑。請告訴你真正希望從上面的示例輸入 – MohitC

+2

中用正則表達式提取什麼?也許,'(\\ S +)/(\\ S +)'? –

+0

謝謝@stribizhev,這工作! :) – Indi

回答

2

注意\w只匹配字母,數字和下劃線。點/句點屬於標點符號,可以用類似Perl的\p{P}或POSIX類[:punct:]捕獲。因此,理論上,你可以使用類似([\\w[:punct:]]+)/([\\w[:punct:]]+)(甚至更多POSIXish ([[:alpha:][:punct:]]+)/([[:alpha:][:punct:]]+)),但我想匹配/兩側的非空白字符最適合您的目的。

這裏是將正則表達式(\\S+)/(\\S+)替代:

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

regex demo參見

[^\s]裝置比空白其他任何符號。請注意0​​表示*任何非空白字符。

如果能有上/雙方都沒有非空白字符,我相信

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

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

將會爲您提供更好,因爲*將匹配0個或更多字符

請參閱another demo

1

你可以使用這個表達式

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

即之前和之後/抓住每一個非空格文本。

RegEx Demo

相關問題