2016-12-01 730 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

這當然不是完美的,但優化結果會更容易(例如用連字符代替完整的中止)... –