2017-02-27 29 views
1

我有這樣的數據:如何將其分解爲令牌?

/some test/ -> next data 
prev<-/now/->/how about this/ 
asd<-/rege\/x/ 
/\/\// 
/\\/ 
/^\d+$/ <- /\./ 
/\./ -> /\d/ 

,我想它拆令牌信息\w+|/.*?/<-->-><-/here/
我試過this不能apear,但在這種情況下/\/\//失敗。

什麼高度重視和我在做正則表達式來彌補這一部分?

+0

喜歡的東西['\ S *(\ W + | \/[^ \/\\] * (?:\\ [^ \/\\] *)* \ /)\ S *'](https://regex101.com/r/EK8Yun/2)? –

+0

@WiktorStribiżew這就是我想要的非常感謝:) –

+0

我想你可以去任何逃避任何方法,但是然後你看不見分隔符開始。如果沒有這些,你的標記就會轉移[https://regex101.com/r/EK8Yun/4](https://regex101.com/r/EK8Yun/4)。總的解析是沒有意義的...解析Perl'$ v =〜\ // x /;'是一個錯誤。 – sln

回答

1

假設你不能有一個轉義/啓動一個/.../子之前逃脫/字符,你可以使用

/\s*(\w+|\/[^\/\\]*(?:\\.[^\/\\]*)*\/)\s*/g 

regex demo

如果換行字符(如CR或LF)可以被轉義,您需要將.替換爲[\s\S]/[^]以匹配任意字符。

注:\/[^\/\\]*(?:\\.[^\/\\]*)*\/匹配...

  • \/ - 一個/
  • [^\/\\]* - 0+比/和其他字符\
  • (?:\\.[^\/\\]*)* - 的
    • \\.零個或多個序列 - 逃脫字符
    • [^\/\\]* - 和0+字符比/其他\
  • \/ - 一個/