【问题标题】:Regular expression for tags but excluding the attributes标签的正则表达式,但不包括属性
【发布时间】:2018-10-15 14:13:35
【问题描述】:

我从事视频游戏本地化工作,我们的 CAT 工具使用正则表达式来检测标签。通常,它们被 [] 包围,因此我们使用 [(.*?)] 来识别它们。然后 CAT 工具以标签格式导入此标签,这意味着翻译人员无法在没有警告的情况下编辑/破坏标签或将其删除。

但是,我们有一个项目,其中包含一个 Gender 标签,其中包含我们需要翻译的属性。标签如下:

[Gender: "male", "female"]

这个想法是是否有一个标签可以将整个片段识别为一个实体,但将男性和女性排除在外。我们使用了这三个(在逗号和方括号之间添加了一些空格以使 \ 可见,如果造成混淆,请见谅):

\ [Gender\: \"

\"\ , \"

\"\ ]

但是,它也可能会在以下句子中产生文本问题: 他们说“不,我们没有”、“我们想要更多”等等。

", " 将被检测为不必要的标签。

有没有办法拥有一个唯一的正则表达式来避免这种情况?如果是这样,如果有更多可翻译的元素或者有限制,是否有可能拥有一个? I.e.: [Gender: "male", "female", "neutral"]

非常感谢您!

更新:作为参考,我附上了正则表达式设置。在底部,您可以看到程序如何使用它们来创建标签。红色元素被转换为对象而不是文本。这样翻译者就不会破坏标签也不会忘记添加它。 enter image description here

【问题讨论】:

  • 我不熟悉猫工具?您可以选择加入捕获组吗?在这里查看我的快速测试。 regex101.com/r/xFvsCe/1(查看替换选项卡)
  • 嗨,Springbo!感谢您的贡献,我已将程序的图像附加到初始帖子以进行澄清。我测试了您提供的正则表达式,恐怕它不起作用,没有一个文本被标记为红色并被识别为标签。

标签: regex tags video-game-consoles


【解决方案1】:

好的,根据您的图片,我认为更好的方法是制作多个正则表达式。因为看起来你可以应用多个规则

一个匹配普通标签(注意它如何只匹配这些)

\[([^:\"])+\]

https://regex101.com/r/xFvsCe/3

对于具有多个可翻译元素的片段,我们需要一些东西。

首先匹配那些元素的开头

\[([^:\n]+: ?\")

https://regex101.com/r/q4Wgdu/2

然后一个来标记逗号分隔符

(?<=[^\]])(\", ?\")

https://regex101.com/r/U9krdh/2

最后一个匹配段的结尾

(?<=[^\]]*?)\"\]

https://regex101.com/r/FkgOOx/2

您可能需要根据程序使用的正则表达式类型更改语法。最后两个正则表达式使用正数lookbehind,其语法可能略有不同。或者甚至可能不支持。

希望对你有帮助

编辑:如果规则应用在eathother之上,这可能不起作用,因为我假设输入文本每次输入规则时都是相同的。但也许这可以在过滤器下拉列表中配置?

【讨论】:

    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 2011-04-20
    • 2020-09-15
    • 2013-11-29
    • 2011-04-12
    • 1970-01-01
    • 2010-09-23
    相关资源
    最近更新 更多