2013-10-14 174 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

更多选项,谢谢。会尝试这个。 –