CSC/ECE 517 Fall 2009/wiki1b 5 j8
Regular Expressions
Who Compare the support for regular expressions in Ruby, Python, PHP, Perl 5, and any other appropriate scripting language with each other. Also compare the syntactic features in these languages with Java's package-based support. What features and syntax do the languages have in common? Are some features supported by some languages and not by others? How robust and easy-to-use are regular expressions in all these languages?
Regular expressions are a critical part of most modern programming languages especially ones that deal string processing as a core part of their functionality. Although using regular expressions can change from language to language, the general principle is the same and similar syntax can generally used across the board.
Usage
Perl
Perl has regular expresions built into the language itself via the '=~' operator. A simple match could be done like this:
$string = "lee"; if ($string =~ m/l.*/) { print "Matches"; }
This would print "Matches since 'lee' starts with an 'l' and has zero or more characters after the 'l'. Replacements can be done simply by using 's' to indicate substitutions:
$string = "peewee"; $string =~ s/e+/aa/g; print $string
This would print "paawaa". The 'g' following the regular expression indicates a global replacement, simply omit this to only replace the first instance of 'e+", which would result in print "paawee".
Java
Unlike many languages Java does not have built-in language support for regular expressions. It instead uses Pattern objects to process regular expressions.
Pattern patt = Pattern.compile("l.*"); Matcher match = patt.matcher("lee"); return match.matches();
This would return true. Since the Pattern object is created with the regular expression, it can be reused with different inputs for increased speed.
Pattern patt = Pattern.compile("l.*"); Matcher match = patt.matcher("eel"); return match.matches();
This would return false since 'eel' does not start with an 'l'. If a developer simply wants to a regular expression once and does not care to reuse the Pattern, he or she can simply use the 'matches' static method within Patthern:
Pattern.matches("l.*", "lee");
or they can simply do operations on the String:
String str = "lee"; str.matches("l.*");
Replacements are done using:
String str = "peewee"; str.replaceAll("e+", "aa")
This would change the sting 'peewee' to 'paawaa', by replacing one or more instance of the letter 'e' with two 'a's. If you just wanted to replace the first instace you would use:
String str = "peewee"; str.replaceAll("e+", "aa")
which would change the string to 'paawee'.
Ruby
Python
Php
References
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html