2012-12-25 22 views
15

Jakie są różnice między perl i java w odniesieniu do tego, jakie terminy wyrażenia regularnego są obsługiwane?Jakie są różnice między możliwościami wyrażeń regularnych w języku perl i java?

To pytanie wyodrębnia się tylko wyrażenia regularne, a konkretnie wyklucza różnic w jak regex mogą być używane - czyli funkcji/metod, wykorzystujących regex - i różnic składniowych pomiędzy językami, takich jak wymóg java do ucieczki backslashes itp.

Szczególnie interesujące jest częściowe/okazjonalne wsparcie dla java o zmiennej długości.

+0

Nieco pytania, ale jest to przybliżone porównanie pomiędzy ** ECMA ** (JS) regex i Perl: http://stackoverflow.com/a/12127503/1400768 – nhahtdh

Odpowiedz

16

Sekcja "Porównanie z Perlem 5" pod numerem java.util.regex.Pattern zawiera wiele różnic. Na przykład Java nie obsługuje conditional regex. W tym celu należy użyć biblioteki zewnętrznej, takiej jak JRegex.

+8

Wydaje się to kompletne. Do tego dodam, że silnik regex Perla ma o wiele lepsze wsparcie Unicode niż inne. W rzeczywistości, twórcy Perla napotkali ostatnio niedociągnięcia w standardzie Unicode, ponieważ nikt nigdy nie dotarł tak daleko jak Perl wcześniej. (Standard został zaktualizowany w wyniku!) – ikegami

1

Istnieje akapit w java.util.regex.Pattern API "Porównanie z Perl 5".

+0

Proszę dodać link. Strona, którą otrzymałem z wyszukiwania, mówiącego o wyrażeniu Perla, nie ma funkcji, która została dodana pół dekady temu. – ikegami

+0

@ikegami .. Prawdopodobnie dostałeś się do łącza Java 6 lub starszego. Wyszukaj 'klasę PAttern w Javie 7'. Dodałem link w mojej odpowiedzi. –