2017-04-21 50 views
1

我想寫下列要求一個正則表達式:正則表達式 - 第一個字符剝離

從文本塊,得到url(...)的內部文本。
如果內部文本以data開頭,則應該忽略它。

下面的正則表達式似乎是唯一的問題,它是刪除結果中的第一個字母。

預期的結果:

../public/fonts/glyphicons-halflings-regular.eot 
https://public/fonts/glyphicons-halflings-regular.eot 
../public/fonts/glyphicons-halflings-regular.ttf 
../public/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular 

實際結果(缺少第一個字符):

./public/fonts/glyphicons-halflings-regular.eot 
ttps://public/fonts/glyphicons-halflings-regular.eot 
./public/fonts/glyphicons-halflings-regular.ttf 
./public/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular 

正則表達式

(?s)url\([^data:](.*?)\);? 

文本

src: url(../public/fonts/glyphicons-halflings-regular.eot); 
src: url(https://public/fonts/glyphicons-halflings-regular.eot); 
src: url(../public/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(data:application/font-woff;base64,bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArICIuL2Rpc3QvYXNzZXRzL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZjIiOw==) format('woff2'),url(data:application/font-woff;base64,bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArICIuL2Rpc3QvYXNzZXRzL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZiI7) format('woff'),url(../public/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../public/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg'); 
} 

如何獲得第一個字符?

在此先感謝。

+0

請注意,根據您的要求,根據您的示例輸入,事實上有5個匹配。 –

回答

2

您需要一個帶負先行更換否定字符類:

url\((?!data)(.*?)\) 
     ^^^^^^ 

regex demo

詳細

  • url\( - 一個字符串url(
  • (?!data) - 下一對字符不應該是一個data
  • (.*?) - 捕獲組1匹配任何0+字符比換行符字符其他儘可能少到第一
  • \) - )符號。
相關問題