2016-11-12 78 views
1

提取信息我需要能夠識別超過一個字符串,如果它匹配與以下模式:具體圖案相匹配,並從串

「:模塊名」 || 'com.example.ClassName'|| ':module-name:com.example.ClassName'|| 'http://url';

我需要確定字符串是否與上述模式之一匹配,讓我們將它們拆分爲3個組(url,本地&無),其中url代表有效的url字符串。另一方面,如果這是我需要的情況,局部必須有3種不同的變體(':module-name'||'com.example.ClassName'||':module-name:com.example.ClassName')提取模塊和組件名稱。

模塊名稱必須是有效的nodejs包名稱,並且組件名稱必須是有效的類名稱(我已獲得此RegExp已覆蓋的有效類名:/^@?[a-z_A-Z] \ w + (?:?@ [A-z_A-Z] \ w +)* $ /)。

我需要的是一種方法來確定字符串屬於其中一個組(url,本地或無),以及在本地的情況下,提取模塊和組件名稱。最佳的正則表達式的解決方案...

感謝

+0

示例字符串的模塊名稱和組件名稱部分是什麼? – guest271314

+0

它們也是字符串,其中一個代表一個有效的nodejs包名(module-name),另一個代表一個字符串,它必須是一個有效的java類包名,我已經介紹了這個驗證,但是我需要一個正則表達式,它允許我識別並提取字符串「:package:component-name」或「:package」或「component-name」中的部分,這些是我試圖檢查的變體。 – YadirHB

+0

你試圖匹配以'「開始的字符串部分:」'? – guest271314

回答

0

通過使用由Croutonix引用了驚人的網絡工具,我是能夠產生正則表達式和測試它實時:

解決的辦法是/ ^([AZ] [A (字符串)

1

能否這項工作? See on regex101

^:.+-.+:.+\..+\..+|^:.+-.+|^.+\..+\..+|^http[s]?:\/\/.+ 

它匹配:x-xx.x.x:x-x:x.x.xhttp[s]://x,x爲1和無限次重複之間的任何字符。如果前面有東西,它將不匹配任何一個。但它將匹配com.class.class.class.classhttp://invalidUrl。正如你所說,你檢查班級名稱是否好。如果您只想要有效的網址,那麼您可以用https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?或任何正則表達式驗證網址替換^http[s]?:\/\/.+。 (我沒有發明這個)