使用记事本++,使用正则表达式从css中提取特定字段

深蓝色

我有一个CSS样式表,我想对它进行一些分析,在Notepad ++中使用正则表达式似乎是个好主意。现在,我发现我无法编写正则表达式,也许这不是一个好主意,但不管是不是好主意,我都想知道如何去做。

我有一组自动生成的样式,标记为(大部分)block_1至block_149。我首先要做的是仅提取有关每种样式指定哪些边距设置的信息,因为这似乎是主要区别之一。有些是合理的,尤其是标题等的早期版本,但后来的版本似乎反映了原始Word文档的复杂计算。您可以在下面的示例中看到两者:

[注意:我在每行的末尾添加了2个空格,以使其在此处正确显示-这些空格在原始代码中不存在。但是,原始代码(从Sigil导入)在每行的开头确实有额外的间隔-我不确定这是空格还是制表符-我一直在尝试使用空格指示符来覆盖所有选项。]

.block_8 {  
    background-color: #FFF;  
    display: block;  
    font-family: "Calibri", sans-serif;  
    font-size: 1.125em;  
    font-weight: bold;  
    line-height: 1.2;  
    page-break-after: avoid;  
    text-align: center;  
    padding: 0;  
    margin: 0 2.25pt 0 0  
    }  
.block_9 {  
    border-bottom: 0;  
    border-top: 0;  
    display: block;  
    line-height: 1.2;  
    text-indent: 1.5em;  
    padding: 0;  
    margin: 0.3em 0  
    }  
.block_10 {  
    background-color: #FFF;  
    border-bottom: 0;  
    border-top: 0;  
    display: block;  
    font-family: serif;  
    font-size: 0.75em;  
    line-height: 12.2pt;  
    text-indent: 1.5em;  
    padding: 0;  
    margin: 0.3em 0  
    }  
...   

.block_113 {  
    background-color: #FFF;  
    border-bottom: 0;  
    border-top: 0;  
    display: block;  
    letter-spacing: -0.1pt;  
    line-height: 1.2;  
    text-indent: 1.5em;  
    padding: 0;  
    margin: 0.3em 0 0.3em 16.1pt  
    }  
.block_114 {  
    background-color: #FFF;  
    border-bottom: 0;  
    border-top: 0;  
    display: block;  
    font-family: serif;  
    font-size: 0.75em;  
    text-indent: 1.5em;  
    padding: 0;  
    margin: 0.3em 0.5pt 0.3em 0.7pt  
    }  

还有其他差异,即使是后面的差异,仅对于正文而言,条目的数量也不同。

我想做的是有一个正则表达式,我可以在第一个实例中使用它来将每个条目减少为:Block_(number)margin:(settings)

我曾想过提取不同的边距设置(T,R,B,L),但是由于源可以包含1,2,3或4个设置,因此用正则表达式整理这些规则超出了我的野心。我一直在使用regex101.com尝试仅使用边距设置从非常简单的识别扩展,但是设法在块号和边距设置之间包括所有(可变数量的)额外的行令我很困惑。理想情况下,我希望以后可以使用类似的正则表达式技术来提取其他设置。我还希望能够处理布局中可变数量的空格和/或制表符。

谁能告诉我该怎么做?到了几乎可以肯定地可以更快地进行基本剪切和粘贴的阶段,但是现在我想知道如何针对可能需要用于另一个项目的时间进行正则表达式。

EtA:我现在有可以满足我要求的代码,现在还需要更多!我想刚好是块中的最后一个设置-假设我想选择行高设置并通过类似的过程将其隔离-作为边距设置的替代选择?

杰哈德

回答

转到Notepad ++(Ctrl + h)或菜单的“替换”对话框Search -> Replace...,然后选择以下选项:

  • 在搜索模式下,选择单选按钮“正则表达式”。
  • 在搜索模式下,选择“ 。匹配换行符

将以下内容用于“查找”:

(\.\w*)[[:blank:]]*\{.*?(margin:[\w[:blank:][:punct:]]*).*?\}

对于“替换,请使用类似以下的东西(仅$ 1和$ 2是重要的):

$1 : $2

解释

从左到右将Find字符串分解成其组成部分,我们有:

  • (\.\w*):首先,我们需要找到块的名称。因此,从字面上开始是“。” \.),后跟一些字母数字/下划线字符(\w*)。将它们放在括号中会使它们成为一个组,在本例中为第一组$1

  • [[:blank:]]*\{.*?:在块的名称之后,可能会有一些空格([[:blank:]]*),后跟一个大括号(\{-用“ \”转义,因为括号在正则表达式中具有特殊含义)。最后,我们匹配ANYTHING(.*),包括新行,但要尽可能少(因此?),以使块中的所有内容都到达下一部分(即“ margin”)。请注意,由于我们正在有效地将其丢弃,因此没有任何部分被分组。

  • (margin:[\w[:blank:][:punct:]]*):下一个感兴趣的部分是“保证金”及其价值。因此,将其分组,并将变为$2首先,我们从字面上匹配margin:,然后是它的值,该值将是一串字母数字/下划线,标点符号和空格(但不能是新行,如字符)。之所以比较复杂,是因为与a之[\w[:blank:][:punct:]]*类的东西相反.*?,是因为a.会匹配任何字符,包括换行符和可能存在的空白行之后的任何字符,直到右花括号为止。

  • .*?\}:最后,我们匹配块中剩余的所有内容(在这种情况下,它只是“ margin”行末尾的新行)和右花括号。再次,被丢弃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用正则表达式和记事本++仅从文本中提取数字

来自分类Dev

如何使用正则表达式从记事本++中的URL中提取域名

来自分类Dev

使用记事本的FileNotFoundException

来自分类Dev

将正则表达式与记事本++结合使用只能获取特定的单词

来自分类Dev

使用记事本++编辑DOT文件

来自分类Dev

使用记事本++替换文本

来自分类Dev

使用记事本++从文档中提取特定文本

来自分类Dev

从记事本++和正则表达式中的文本中提取电子邮件

来自分类Dev

使用记事本中的正则表达式删除标签之间的文本

来自分类Dev

使用记事本++删除与正则表达式匹配的所有行(不)

来自分类Dev

在记事本++中查找和替换使用通配符/正则表达式字符

来自分类Dev

使用记事本++查找并替换为正则表达式

来自分类Dev

搜索并替换要使用的记事本正则表达式

来自分类Dev

如何在记事本++中使用正则表达式“查找和替换”

来自分类Dev

在记事本中使用正则表达式++

来自分类Dev

使用正则表达式在记事本++中查找和替换

来自分类Dev

记事本++:在使用正则表达式找到的多行匹配的开头添加标签?

来自分类Dev

使用包含记事本++中先前匹配项的正则表达式替换

来自分类Dev

在记事本++中使用正则表达式替换的字符串值

来自分类Dev

使用正则表达式在记事本++中查找/替换

来自分类Dev

使用记事本++替换XML标签之间的文本的正则表达式

来自分类Dev

在记事本++中使用正则表达式查找图像字符串

来自分类Dev

在记事本++的多行中使用正则表达式

来自分类Dev

在记事本++中使用正则表达式,进行搜索

来自分类Dev

记事本++:将正则表达式替换

来自分类Dev

记事本++查找/替换正则表达式

来自分类Dev

记事本++正则表达式

来自分类Dev

记事本++正则表达式

来自分类Dev

如何使用记事本++计算平面文件中的字段

Related 相关文章

  1. 1

    使用正则表达式和记事本++仅从文本中提取数字

  2. 2

    如何使用正则表达式从记事本++中的URL中提取域名

  3. 3

    使用记事本的FileNotFoundException

  4. 4

    将正则表达式与记事本++结合使用只能获取特定的单词

  5. 5

    使用记事本++编辑DOT文件

  6. 6

    使用记事本++替换文本

  7. 7

    使用记事本++从文档中提取特定文本

  8. 8

    从记事本++和正则表达式中的文本中提取电子邮件

  9. 9

    使用记事本中的正则表达式删除标签之间的文本

  10. 10

    使用记事本++删除与正则表达式匹配的所有行(不)

  11. 11

    在记事本++中查找和替换使用通配符/正则表达式字符

  12. 12

    使用记事本++查找并替换为正则表达式

  13. 13

    搜索并替换要使用的记事本正则表达式

  14. 14

    如何在记事本++中使用正则表达式“查找和替换”

  15. 15

    在记事本中使用正则表达式++

  16. 16

    使用正则表达式在记事本++中查找和替换

  17. 17

    记事本++:在使用正则表达式找到的多行匹配的开头添加标签?

  18. 18

    使用包含记事本++中先前匹配项的正则表达式替换

  19. 19

    在记事本++中使用正则表达式替换的字符串值

  20. 20

    使用正则表达式在记事本++中查找/替换

  21. 21

    使用记事本++替换XML标签之间的文本的正则表达式

  22. 22

    在记事本++中使用正则表达式查找图像字符串

  23. 23

    在记事本++的多行中使用正则表达式

  24. 24

    在记事本++中使用正则表达式,进行搜索

  25. 25

    记事本++:将正则表达式替换

  26. 26

    记事本++查找/替换正则表达式

  27. 27

    记事本++正则表达式

  28. 28

    记事本++正则表达式

  29. 29

    如何使用记事本++计算平面文件中的字段

热门标签

归档