2013-10-14 228 views
1

我正在尋找這個簡單的正則表達式後一定數目的字符,正則表達式中刪除匹配

這是輸入:

This is a sample text www.testdomainname.com/picsinsideit/stunningpictureofkays1381737242g8k4n-280x428.jpg this is also sample text 

輸出:

This is a sample text www.testdomainname.com/picsinsideit/stunningpictureofkays1381737242g8k4n.jpg this is also sample text 

我想刪除文本-280x428,即在刪除文本之前刪除8個字符.jpg 寬度和高度對於每個 圖片。所以我想在搜索文字.jpg後匹配刪除之前的8個字符。

我在這裏搜索了很多問題,但沒有找到解決方案,請幫助我。

.{8}(?=\.jpg) 

如果你不知道多少個字有,這與任意數量的字符,包括最後連字符:

+6

請註明語言/正則表達式引擎,包括你嘗試在你的問題題。 – Jerry

+0

我只是想用記事本+ –

回答

4

之間的一切你只需要定義你想匹配的模式,這並不困難。讓我們一步一步來做。

  • 它以一個「 - 」,這就是在正則表達式是相同的。

  • 然後有一系列數字與中間的「x」。創建一個character class[\dx],其中\d是一個數字,並使用+quantifier與此匹配一次或多次。

    這樣做使得它更加靈活,當有數字多於或少於3位數字時,它也可以代替「-1600x1200」或「-64x48」之類的東西。

    如果您想對模式更加嚴格,請執行類似\d{2,4}x\d{2,4}的操作,該操作只能匹配2至4位數字,後跟「x」,然後是2至4位數字。

  • 匹配「.jpg」與\.jpg.需要轉義,因爲它是special character的正則表達式。

這導致

-[\dx]+\.jpg 

然後以 「.jpg」 代替

it on Regexr

+0

我沒有考慮更多的寬度,我厭倦了這一點。這是我尋找的完美解決方案。非常感謝你。 –

+0

+ +1爲清晰的步驟,這最後給了我一個如何建立自己的正則表達式爲我的特定情況感 – myfunkyside

+0

嚴重的是,我希望我可以給更多upvotes!我在這些特殊的學習和嘗試網站上一直在搞這個東西一個小時,但沒有一個人解釋它和你在這裏一樣好。在閱讀你的答案後的10分鐘內,我創建了自己的正則表達式,它正是我所需要的。 – myfunkyside

0

此正則表達式文本「.JPG」之前剛剛8個字符匹配在「.jpg」之前:

-[^-]*(?=\.jpg) 

使用您選擇的應用程序語言將其替換爲空白以將其刪除。

看起來很糟糕的表情(?=...)是一種「向前看」,它與其中的正則表達式匹配,但不會消耗或捕獲它匹配的輸入。

+0

來替換內容,謝謝你的完美運作。 –

+0

不用擔心。看看我的最新編輯是否更有幫助 – Bohemian

0

不知道你使用的語言,並跟隨你想要做什麼,我會提出如下正則表達式:

^(.*).{8}(\.jpg.*)$ 

而且$1$2作爲替換字符串。

這將簡單地刪除每個.jpg前面的8個字符,如您所願。

如果你想與問候寬度/高度的數字更加靈活,你也可以使用:

^(.*)-[^-]+(\.jpg.*)$ 

這將基本上查找-(含)和.jpg

+0

更多選項,謝謝。會嘗試這個。 –