我遇到了Java中正則表達式的問題。我測試了我的正則表達式,它似乎很好匹配,但其中一個組返回一個空值。它能夠找到正確的組數,但我無法理解爲什麼第二個序列似乎開始並以錯誤的索引結束。Java正則表達式:查找返回true,但其中一個組()無法返回值
模式:
^http\://[\w\-\.]+\.[a-zA-Z]{2}/[\w]{2}/[\w\-]+/(uvw_)+([a-zA-Z0-9]?)+([\w\-]*)$
數據來進行測試:
http://www.testing.ca/en/ABC-DEF/uvw_XY5114_2-Z_1_54321
尋找:XY5114
這裏是regexplanet截圖:
編輯:我這由我們工作荷蘭國際集團下面的模式:
^http\://[\w\-\.]+\.[a-zA-Z]{2}/[\w]{2}/[\w\-]+/(uvw_)+([a-zA-Z0-9]*)([\w\-]*)$
而另一種選擇建議:
^http\://[\w\-\.]+\.[a-zA-Z]{2}/[\w]{2}/[\w\-]+/(uvw_)+([a-zA-Z0-9]+)([\w\-]*)$
爲什麼不使用URI來首先將URL分解爲組件,以便日後更輕鬆地進行分析? – fge
如果可能,我想盡一切辦法使用正則表達式。 – user2551015
那麼,在這種情況下,正則表達式不是最好的工具 – fge