标签的正则表达式,但不包括属性

时间:2018-10-15 14:13:35

标签: regex tags video-game-consoles

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

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

[Gender: "male", "female"]

这个想法是,是否有一个标签可以将整个细分受众群识别为一个实体,但不包括男性和女性。我们使用了这三个字符(在逗号和方括号之间添加了一些空格,以使\可见,如果令人困惑,对不起):

\ [Gender\: \"

\"\ , \"

\"\ ]

但是,它也可能在文本中产生问题,例如: 他们说“不,我们不想要”,“我们想要更多”等等。

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

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

非常感谢您!

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

1 个答案:

答案 0 :(得分:0)

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

一个与普通标签匹配的标签(请注意它仅与这些标签匹配)

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

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,其语法可能略有不同。也许甚至不支持。

希望有帮助

编辑:如果将规则应用在“同伴”上,则可能无法正常工作,因为我认为每次输入的规则输入文本都是相同的。但这可以在过滤器下拉列表中配置吗?