2015-12-23 17 views
0

我有表達現在是有沒有什麼辦法可以簡化這個正則表達式(去除前綴)

/^((\d{1,2}(?!\d)(\.|-)\d{2}(?!\d)\s?)|(\d{1,3}(?!\d)\.?\s?))(-\s)?/ 

其目的是爲了匹配(更換空白)沿

線的任何數字前綴
"01. " 
"01. - " 
"01." 
"01 - " 
"01" 
"0.01" 

和其他各種組合。

到目前爲止,它適用於我遇到的情況,但我想知道是否有任何方法來壓縮它。

+0

它們的前綴是什麼?比如,你可以逃避一切,直到第一個字的字符? –

+0

需要更多信息,例如實際樣本數據值。我們不知道*各種其他組合*可能是什麼,或者究竟是什麼*前綴*。可能有很多方法可以更好地執行此操作,或者使用改進的正則表達式,但是您尚未提供確定問題所需的信息。此外,澄清你的要求 - 你說你想要替換*任何數字前綴*,但包括*非*數字的前綴,如「01 - 」和「01.-」。 (引號是前綴的一部分,還是隻是樣本中沒有意義的噪聲?) –

+0

那麼在*前綴之後出現的其他數字呢?你如何定義*前綴的結尾和非前綴的開始?沒有更具體的要求,你的問題是無法回答的。 –

回答

1

此正則表達式匹配所有的採樣輸入:

"\d+\.?\d*(-)? " 

live demo

+0

它確實匹配所有的前綴,但不幸的是,它失敗(通過匹配)其中一個實際文件名稱後面有一個以數字開頭的前綴。我將繼續關注它,看看是否可以找到任何沒有被這些文件破壞的模式(或者讓那些向我發送數據本身來規範文件名的人) – Trel

+0

@Trei添加應該輸入的示例*不匹配你的問題 – Bohemian

+1

我認爲我發現了一個似乎適用於所有的問題 '^ \ d + \。?(?:\ d {2}(?!\ d))?(?:[ - ] *)?' 輸入btw的示例爲「01.5 Million」(「5 Million」是實際名稱)和「10 - 1000 Leagues」(其中「1000 Leagues」)是標題。 – Trel

相關問題