2017-11-25 62 views
1

我想的字符串分割成以下正則表達式來捕獲與非固定長度回顧後圖案 - 分割字符串

S <- "No. Ok (whatever). If you must. Please try to be careful (shakes head)." 

[1] No. 
[2] Ok (whatever). If you must. 
[3] Please try to be careful (shakes head). 

的圖案是各(...)之前第一.

我熟悉(?<=...)(即積極lookbehind),但這似乎不適用於非固定長度的模式。我想知道,如果我對積極向後看是錯誤的,或者如果有一些正則表達式的魔術來做到這一點。謝謝!

+1

對不起,我不知道如何最好地解釋它。我正在尋找將'S'分割成左括號('(')')的句號('.')。例如,'No'後面的第一個出現(後面)在'好'後... – CPak

回答

2

請注意,我不太瞭解ruby,但應該有類似split的方法,它使用正則表達式模式作爲分隔符並相應地拆分字符串。

使用這個表達式:

(?<=\.) (?=[^.]+?\(.+?\)) 

這看起來空格字符。在空間後面,必須有一個點(?<=\.)。在(?=之後,必須有一串不是點的字符[^.]+?,然後是一對帶有\(.+?\)內的東西的括號。

在線嘗試:https://regex101.com/r/8PcbFJ/1

+0

太棒了,非常感謝![^。] +?'的使用非常具有啓發性 – CPak

+0

對於其他SO用戶,在'R'中''strsplit(S,「(?<= \\。)(?= [^。] +?\\(。+?\\))「,perl = TRUE)'給出預期的結果 – CPak