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

tf7tbtn2  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(83)

我从事视频游戏本地化工作,我们的CAT工具使用正则表达式来检测标签。通常,它们被[]括起来,所以我们使用[(.*?)]来识别它们。然后CAT工具会以标记格式导入此文件,这意味着翻译人员无法编辑/断开标记或删除标记,而不会发出警告。
然而,我们有一个项目,其中包含一个性别标签的属性,我们需要翻译。标签如下:

[Gender: "male", "female"]

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

\ [Gender\: \"

\"\ , \"

\"\ ]


但是,它可能会在句子中产生文本问题,例如:他们说:“不,我们不需要”,“我们想要更多”等等。
", "将被不必要地检测为标记。
有没有一种方法可以使用一个唯一的正则表达式来避免这种情况?如果是的话,如果有更多的可译元素,是否有可能有一个,或者有一个限制?I.e.: [Gender: "male", "female", "neutral"]
非常感谢您的到来!
更新:作为参考,我已经附加了Regex设置。在底部,您可以看到程序如何使用它们来创建标记。红色元素将转换为对象而不是文本。这样翻译人员就不会破坏标签,也不会忘记添加标签。enter image description here

uemypmqf

uemypmqf1#

根据你的图片,我认为更好的方法是创建多个正则表达式。因为看起来你可以应用多个规则
一个匹配普通标记(注意它是如何只匹配这些标记的)

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

字符串
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
您可能需要根据程序使用的正则表达式类型更改语法。最后两个正则表达式使用了正向后看,这可能有一个稍微不同的语法。甚至可能不支持。
希望有帮助
编辑:如果规则应用在eathother之上,这可能不起作用,因为我假设输入文本每次输入规则时都是相同的。但也许这可以在过滤器下拉列表中配置?

相关问题