2017-04-02 59 views
2

我不是正則表達式的專家,無法確定我應該改變的地方。未轉義的左大括號正則表達式錯誤

我得到這兩個錯誤的正則表達式

轉義的左括號已被棄用,通過正則表達式通過;標記爲<-- HEREm/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/ at /usr/share/perl5/Debconf/Question.pm line 72.

正則表達式中未轉義的左大括號已被棄用,通過正則表達式傳遞;在/usr/share/perl5/Debconf/Config.pm線30

m/\${ <-- HERE ([^}]+)}/標誌着<-- HERE當我跳到線72這是我看到

while ($rest =~ m/^(.*?)(\\)?\${([^{}]+)}(.*)$/sg) { 
+3

讓我只是猜測,因爲你錯過了任何有用的上下文:你在你的系統上使用了一個更新的Perl版本,然後是系統附帶的版本,現在你看到了由此造成的問題。現在,這些只是警告,如果你不瞭解Perl,你可以忽略它。在任何情況下,最好使用系統附帶的原始Perl用於系統附帶的任何腳本。如果你瞭解Perl,你可以通過轉義正則表達式中的'{',即'\ {'。 –

+0

非常感謝!這工作。是的,我做了一個sudo apt-get升級,並在我的Ubuntu 14.04上安裝了一些新的軟件包。我正在慢慢嘗試着逐個修復它們...... T_T這是否會影響我的桑巴舞或者ldap? – TheCabDriverCheatedMeToday

+0

由於不知道究竟發生了什麼變化,因此未知它們可能具有哪些影響。 –

回答

5

這是一個棄用警告指示代碼將在未來停止工作

如果您想從字面上匹配{,則應該將其轉義。

換句話說,您可以通過將第一個{替換爲\{來解決問題(消除警告)。

+0

轉義'{並不總是最好的解決方案。有時使用'{,n}'來代替'{0,n}'來指示0..n次重複。這用於工作,現在0不再是可選的。 – cas

+0

@cas,固定。 。 。 – ikegami

+0

作品完美! –