在Sublime Text 3中使用正则表达式替换

时间:2017-12-15 16:18:44

标签: regex sublimetext3 sublimetext pcre

我想替换文件中的所有宽度。我们正在将所有表切换到bootstrap,所以我使用正则表达式来替换一些东西以使我的工作更轻松。

我遇到的问题是你们可以在下面的图片中看到

enter image description here

enter image description here

enter image description here

在第二张图片中,你们可以看到搜索正则表达式几乎都在挑选。你能解释一下原因吗?

Btw Sublime Text使用PCRE

编辑:刚刚找到了一个快速解决方案,但我仍然想知道为什么使用它不起作用。

width='\w*%'

感谢

3 个答案:

答案 0 :(得分:3)

在你的模式中

width='.*'

点将匹配任何字符,包括单引号,并尽可能多。所以它匹配 last 单引号

之前的所有内容

您可以使用非贪婪的量词.*?来解决此问题,该量词将与少数字符匹配

width='.*?'

答案 1 :(得分:2)

使用这个:

查找:width='[^']+'

其中[^']+表示1个或多个不是引用的字符

答案 2 :(得分:2)

.*匹配尽可能多的输入。因此,在正则表达式width='.*'中,正则表达式引擎执行此操作:

  1. 找到width='
  2. 的第一个实例
  3. 尽可能匹配
  4. 向后退,直到找到结束'
  5. 所以这几乎匹配整个字符串。通常最好将字符串的内容与否定的字符类匹配:width='[^']*'。即:“尽可能匹配,只要它不是单引号”。

    或者,PCRE允许*?量词,这意味着:匹配尽可能少。这通常更直观。然后,正则表达式将是width='.*?'