SDL Trados中的Regexp搜索(翻译工具)

时间:2016-12-01 03:05:13

标签: regex

在我翻译的文件中,有12.05.2011类型的大量日期。我需要将月份数字(中间)替换为月份名称,例如-May-,这将给出12-May-2011。这是必要的,因为有些读者可能错误地认为月份数字在开头而不是中间。

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

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

enter image description here

P.S。我想搜索填充整个翻译段的字符串,因为可能会有一些非日期字符串,比如一些生产代码2135.05.2011.462,而我的搜索和替换可能会错误地放置{{1 }} 在那里。 ^ _ ^这会破坏我的翻译。

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

3 个答案:

答案 0 :(得分:1)

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

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

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

选择较长的日期和较短的日期。我想你想要d-MMM-yy作为长日期,或者dd.MMM.yyyy作为短日期。只需测试其中的一些,看看哪种效果最佳。

AutoSubstitutionOptions

答案 1 :(得分:0)

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

以下正则表达式适用于您的案例:

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

答案 2 :(得分:0)

看起来在Trados中,您应该将^$ 置于内部和lookbehind括号中,如下所示:

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

如果我的这个答案被低估了,我会知道我错了,但到目前为止似乎有效。