对比工具AraxisMerge自定义对比规则(含JavaScript实用对比规则)

在对文本进行对比时,难免需要自己定制对比规则;本文就详细讲解一下有名的对比工具 AraxisMerge 实现自定义对比规则的方法 和 针对 JavaScript代码 的一些实用的对比规则;

目录

  • 一、问题
  • 二、忽略空格相关的差异
    • Lines相关的各配置选项的详细说明
  • 三、忽略行尾分号的差异
    • Expressions面板中各配置项的详细说明
  • 四、忽略非嵌套的单双引号

内容

一、问题

开发工具往往都有格式化代码的功能,然而,JavaScript代码 的格式规范有多种,不同 开发工具 对 JavaScript代码 的格式化规范 可能不一样,比如,语句结束处默认带不带 分号 ; ,导入模块时,路径字符串是用用单引号 还是 双引号,等等,这些差异,导致在对比 JavaScript 代码时,往往会出现很多的差异提示,如下所示:

双引号分号.js

import GBY from "GBY";
var gby = new GBY();
gby.name = "郭斌勇"  
  
  console.log(gby) ;

单引号无分号.js

import GBY from 'GBY'
var    gby = new GBY()
gby.name = "郭斌勇" 


console.log(gby)

对比效果:

问题

注意:图中高亮部分均是被认为是有差异的部分;

从图中可以看出,对比工具把以下区别认为是差异:

  • 非嵌套的单引号 与 双引号;
  • 行尾 分号 和 行尾 没有 分号;
  • 空行;
  • 连续的空格;
  • 行首空格;
  • 行尾空格;

而这些在 JS 中都是等效的;

二、忽略空格相关的差异

应用菜单栏:Araxis Merge/Preferences.../Lines 中,勾选以下选项:

或者

工具条:Preferences/Whitespace 中,勾选以下选项:

空格

可以忽略如下差异:

  • 空行;
  • 连续的空格;
  • 行首空格;
  • 行尾空格;

Lines相关的各配置选项的详细说明

应用菜单栏:Araxis Merge/Preferences.../Lines 下面的选项 是 可以设置应用于文件和文件夹比较窗口执行的文本比较中的行的选项。

  • 忽略行首空白处的差异

    • Ignore differences in whitespace at the start of lines
    • Ignore Leading
      选择此选项可在比较文件时忽略行首的空格(空格,制表符,回车符和行尾)。
  • 忽略行尾空白处的差异

    • Ignore differences in whitespace at the end of lines
    • Ignore Trailing
      选择此选项可在比较文件时忽略行尾的空格(空格,制表符,回车符和行尾)。
  • 将连续的空格视为单个空格

    • Treat consecutive whitespace as a single space
    • Ignore Consecutive
      选中此选项可忽略由于在现有空白字符之后引入额外的空白字符而引起的差异。
  • 忽略空格中的所有差异
    • Ignore all differences in whitespace
    • Ignore All
      选择此选项可在比较文件时忽略行内的所有空格(空格,制表符,回车符和行尾)。
  • 忽略字符大小写的差异
    • Ignore differences in character case
    • Ignore Case
      选择此选项可使合并忽略行中字符的大小写。如果您要比较不区分大小写的编程语言的源代码,这将特别有用。
  • 忽略行尾字符(CR和LF)中的差异
    • Ignore differences in line-ending characters (CR and LF)
    • Ignore Line Endings
      选择此选项以使“合并”在比较文件时忽略Windows样式的行尾(CR LF),UNIX的行尾(LF)和Macintosh的行尾(CR)之间的差异。
  • 忽略以下列号/范围输入字段中的字符

    • Ignore characters in the following column number/ranges entry field

    输入比较行时要忽略的列。当比较包含格式正确的表格数据的文件时,忽略列会很有用,尤其是在您难以构造合适的正则表达式的情况下。

    列号应以逗号分隔。要指定列的范围,请使用格式n-m。您可以省略范围内的第二个数字,以使范围保持开放式,在这种情况下,范围将扩展到行尾。列从1(非0)开始编号。

    例如:

    1-8,10,12,14,80-
    

    注意: 选项卡字符被计为单列字符,与已设置的任何选项卡扩展选项无关。

  • 数值比较公差
    • Numeric comparison tolerance
      此字段定义在比较文本文件中的数值时使用的容差,该文本文件的类型定义为Text with numeric data“ 文件类型”选项页上。如果相应的数值相差小于或等于此处指定的值,则它们将被视为相同。

三、忽略行尾分号的差异

忽略行尾分号 的 设置需要通过 表达式来实现了;

应用菜单栏:Araxis Merge/Preferences.../Expressions

  1. 点击 + 号 图标,添加一个表达式;
    Expressions
  2. Expression 中填入以下正则表达式 ;+(\s*;*)*$,并按如下图配置:
    忽略行尾分号

Expressions面板中各配置项的详细说明

应用菜单栏:Araxis Merge/Preferences.../Expressions 面板用来编辑正则表达式的定义和描述。

  • Description : 描述;
    使用此字段在下面的字段中输入对表达式行为的描述。

  • Expression : 正则表达式;
    该输入字段包含正则表达式定义。输入字段下方的文本指示输入字段的内容在语法上是否正确。

  • Force entire line unchanged if any part matches the expression : 如果任何部分匹配表达式,则强制整行不变;
    如果行的任何部分包含正则表达式的匹配项,请选择此选项以强制行进入未更改状态。出于合并目的,这导致Merge完全忽略包含该表达式匹配项的任何行。请注意,整行不需要匹配表达式(除非表达式指定必须匹配)。

  • Ignore sequences of characters that match the expression : 忽略与表达式匹配的字符序列;
    选择此选项可使“合并”忽略与正则表达式匹配的字符序列。当行除了正则表达式的匹配项之外还可能包含有用的内容时,请使用此选项。例如,您可以使用一个表达式使HTML标记元素被忽略(<[^<]*>),并使Merge比较其余的行内容。

    注意:

    • 如果由于该行的全部内容与您的正则表达式列表匹配而被忽略,则该行将被视为空白行;它不会被强制进入不变状态。
    • 正则表达式匹配算法是贪婪的。例如,一个表达式 <.*> 将导致全部 <b>Hello, world!</b> 忽略,而不仅仅是个体 <b></b> 序列。
  • Sample line : 示例行
    您可以在此字段中输入文本的示例行,以查看输入的正则表达式将如何导致字符序列被忽略。

  • Remove sequences of characters matching these selected sub-expressions : 删除与这些所选子表达式匹配的字符序列
    默认情况下,合并将忽略与正则表达式匹配的整个字符序列。您可能只想忽略匹配的序列的一部分。例如,如果您想忽略 C++ 类名中的更改,但要显示类在何处已更改为结构(反之亦然),则可以使用如下表达式:

    (class|struct)[ \t]+([a-zA-Z0-9_]+)
    

    该表达式包含两个用括号括起来的子表达式。当应用于示例行时:

    class SomeClass : public BaseClass {
    

    子表达式列表将显示三个条目:

    • 第一个(All)是整个正则表达式匹配的字符序列;
    • 第二个(1)是第一个子表达式 (class|struct) 匹配的字符序列;
    • 第三个(2)是由第二个子表达式 ([a-zA-Z0-9_]+) 匹配的字符序列;
      如果要忽略类或结构体类型的差异,但 不忽略 类或结构体 实现的差异,则可以选中列表中的 第二个(1),而不要选中第三个(2)。
  • Sample line, with selected sub-expressions removed : 示例行,删除了选定的子表达式后的效果;
    此字段显示将正则表达式应用于在上面的编辑字段中输入的示例行的效果。字符的匹配序列从样本行中剥离。剩下的就是当比较该行与其他行时,比较引擎将使用的内容。如果已将“合并”配置为忽略行内的空格,则此字段也将显示该效果。

四、忽略非嵌套的单双引号的差异

忽略非嵌套的单双引号 的 设置也需要通过 表达式 ("|')[^"']*(\1) 来实现;

应用菜单栏:Araxis Merge/Preferences.../Expressions 中添加一个表达式 ("|')[^"']*(\1),并按如下图配置:

忽略非嵌套的单双引号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,380评论 0 5
  • Python中的正则表达式(re) import rere.match #从开始位置开始匹配,如果开头没有则无re...
    BigJeffWang阅读 7,075评论 0 99
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,145评论 0 9
  • 本文译自 制作正则引擎的作者 Jan Goyvaerts 为工具 RegexBuddy 写的教程版权归原作者所有注...
    极客圈阅读 3,284评论 0 25
  • http://www.jb51.net/tools/zhengze.html 正则表达式30分钟入门教程 版本:v...
    nullleaf阅读 590评论 0 2