QA 检查 - 高级正则表达式检查

24 篇文章 0 订阅

QA 检查 - 高级正则表达式检查
高级QA检查是基于正则表达式的QA检查,并且支持多条规则检查,因此高级QA检查需要设计为支持序列化,可以导出和导入QA检查设置。

下面简要定义了一个RegExRule类以及8中匹配模式的枚举

using System.Xml.Serialization;

namespace besteasy.NextCat.Verification.RegExRule
{
    [Serializable]
    public class RegExRule
    {
        public string Description {get;set;}
        
        public bool IgnoreCase {get;set;}
        
        public string RegExSource {get;set;}
        
        public string RegExTarget {get;set;}
        
        //Enum RuleCondition 
        public RegExConditionTypes RuleCondition {get;set}
    }
    
    //枚举8种匹配模式
    public enum RegExConditionTypes
    {
        TargetAndSource,
        TargetNotSource,
        SourceNotTarget,
        SourceOnly,
        TargetOnly,
        DifferentCount,
        GroupedSourceNotTarget,
        GroupedTargetAndSource
    }
}

匹配模式

  1. TargetAndSource
    如果在原文句段和译文句段中找到该格式,则报告
  2. TargetNotSource
    如果仅在译文句段而非原文句段中找到该格式,则报告
  3. SourceNotTarget
    如果仅在原文句段而非译文句段中找到该格式,则报告
  4. SourceOnly
    仅检查原文句段的格式,不检查译文句段的格式。若在原文句段中找到格式,则报告
  5. TargetOnly
    仅检查译文句段的格式,不检查原文句段的格式。若在译文句段中找到格式,则报告
  6. DifferentCount
    如果在原文句段和译文句段中找到该格式的数量不一致
    (在规则1的基础上增加了数量限制)
  7. GroupedSourceNotTarget
    分组搜索表达式 - 使用原文 RegEx 中指定组的反向引用来构建译文表达式中的字符串,以搜索译文句段。若译文不包含正确的字符串,则报告
    注: 译文 RegEx 不能包含任何特殊的转义字符,而且完全作为用于 .NET RegEx 实施替换功能的格式。

例如:
原文句段:“See more details on p. 45 of our book.”
译文句段:Für mehr Details, sehen Sie auf S. 46 unseres Buchs nach."

RegExSource = "p\. (\d+)";
RegExTarget = "S\. $1";
RuleCondition = RegExConditionTypes.GroupedSourceNotTarget;

RegExSource 在原文中匹配到p. 45,然后使用捕获值45构建译文匹配规则S. 45,在译文中未能匹配,因此报告错误。
8. GroupedTargetAndSource
分组搜索表达式 - 使用原文 RegEx 中指定组的反向引用来构建译文表达式中的字符串,以搜索译文句段。若在译文句段中找到匹配字符串,但包含禁用的变体,则报告
注: 译文 RegEx 不能包含任何特殊的转义字符,而且完全作为用于 .NET RegEx 实施替换功能的格式。
例如:
原文句段:“This is my 1.2 testing sentence.”
译文句段:“Toto je moje 1-2 testovaci veta.”

RegExSource = "(\d+\.\d+)";
RegExTarget = "$1";
RuleCondition = RegExConditionTypes.GroupedTargetAndSource;

RegExSource 在原文中匹配到1.2,然后使用捕获值1.2构建译文匹配规则,在译文中未能匹配,因此报告错误。
举例说明
译文商标检查,检查译文中商标是否漏译

RegExSource = "®";
RegExTarget = "®";
RuleCondition = RegExConditionTypes.SourceNotTarget;

中翻英项目译文残留中文字符

RegExTarget = "[\u4E00-\u9FA5\u3000-\u303F\uFF07-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65]";
RuleCondition = RegExConditionTypes.TargetOnly;

译文中叠词

RegExTarget = "\b(\w+)\b\s\1\b";
RuleCondition = RegExConditionTypes.TargetOnly;

译文中重复空格

RegExTarget = "\s{2,}";
RuleCondition = RegExConditionTypes.TargetOnly;

在数字与 % 符号之间多出一个空格,例如,30 %

RegExTarget = "[0-9]{1,}\s%";
RuleCondition = RegExConditionTypes.TargetOnly;

括号前的空格缺失,例如,text(text)

RegExTarget = "[^\s](\(|\[|\{)";
RuleCondition = RegExConditionTypes.TargetOnly;

在 mm 前多出一个空格,例如,30 mm

RegExTarget = "[0-9]{1,}\smm";
RuleCondition = RegExConditionTypes.TargetOnly;

术语检查

RegExSource = "NBA";
RegExTarget = "美国职业篮球联赛\(NBA\)";
RuleCondition = RegExConditionTypes.SourceNotTarget;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值