2016-12-01 147 views
0

在翻译的文档中,有大量日期类型为12.05.2011。我需要用月份名称替换月份数字(中间),如-May-,这将给12-May-2011。这是必要的,因为有些读者可能错误地认为月份编号是在开头而不是在中间。SDL Trados中的正则表达式搜索(翻译工具)

出于某种原因,我想出了正则表达式^(?<=[\d]{2})\.05\.(?=[\d]{2,4})$,只有当我删除^$符号时才起作用。这是为什么?

在下图中,正则表达式无法选择.05.,除非我删除那些^$

P.S.我想搜索填充整个翻译部分的字符串,因为偶然可能会有一些非日期字符串,例如某些生产代码,2135.05.2011.462,而我的搜索替换可能错误地将-May-放在那里。^_ ^那会破坏我的翻译。

直到我设法使用^...$那里,我会用它作为粗略的方法来确保至少天数在01-39范围内:(?<=[0-3][0-9])\.05\.(?=20{0,1}[\d]{2})。这也确保年份数字(如果它有4位数字)具有20作为其中前两个数字(因为在我的文档中日期通常来自21世纪)。

回答

0

^表示开始一行,$表示结束一行。你不是说在一行中搜索整个字符串对吗?

下您的案件正则表达式的作品:

(?<=[\D\.][\d]{2})\.\d{2}\.(?=[\d]{2,4}) 
+0

谢谢你,但我想寻找填补整个翻译区段列,因为有可能会偶然出现一些非日期字符串,比方说,一些生产代码,'2135.05.2011.462'和我的搜索和替换可能会错误地将' - 可以''放在那里。^_ ^这会破坏我的翻译。 – CopperKettle

+0

因为翻译段不包含非空白字符,所以'\ s'的正则表达式在我的情况下无法正常工作。 – CopperKettle

+0

@CopperKettle我编辑了答案。给我失败的案例,并在我编辑的答案中尝试新的正则表达式。 –

0

它看起来像在TRADOS,你应该把^$的lookbefore和回顾后支架,像这样:

(?<=^[0-3][0-9])\.05\.(?=[\d]{2,4}$)

如果我的这个答案被低估,我会知道我错了,但它似乎迄今为止工作。

1

请勿对此使用RegEx,但请使用内置选项。他们隐藏得很好,但他们工作得很好。无需任何手动操作,SDL就会自动调整日期格式。

如果您想更改将来创建的项目的选项: 文件菜单>选项>语言对> [相关语言对]>翻译记忆库和自动翻译>自动替换>日期和时间。

如果要将更改应用于现有项目: 项目设置>语言对> [相关语言对]>翻译记忆库和自动翻译>自动替换>日期和时间。

选择长日期和短日期。我认为你需要d-MMM-yy作为长日期,或者dd.MMM.yyyy作为短日期。只要测试其中的一些,看看哪个能够提供最好的结果。

AutoSubstitutionOptions

+0

谢谢你的建议!事实上,我确实在几天前启用了此选项。根据我在这些日子里的经验,它的工作非常可怕(至少在Trados 2011中)。 – CopperKettle

+0

这当然不是完美的,但优化结果会更容易(例如用连字符代替完整的中止)... –