Both languages claim to use Perl style regular expressions. If I have one language test a regular expression for validity, will it work in the other? Where do the regular ex
From my experience:
Java 7 regular expressions as compared to .NET 2.0 regular expressions:
Underscore symbol in group names is not supported
Groups with the same name (in the same regular expression) are not supported (although it may be really useful in expressions using "or"!)
Groups having captured nothing have value of null and not of an empty string
Group with index 0 also contains the whole match (same as in .NET) BUT is not included in groupCount()
Group back reference in replace expressions is also denoted with dollar sign (e.g. $1), but if the same expression contains dollar sign as the end-of-line marker - then the back reference dollar should be escaped (\$), otherwise in Java we get the "illegal group reference" error
End-of-line symbol ($) behaves greedy. Consider, for example, the following expression (Java-string is given): "bla(bla(?:$|\r\n))+)?$". Here the last line of text will be NOT captured! To capture it, we must substitute "$" with "\z".
There is no "Explicit Capture" mode.
Empty string doesn't satisfy the ^.{0}$ pattern.
Symbol "-" must be escaped when used inside square brackets. That is, pattern "[a-z+-]+" doesn't match string "f+g-h" in Java, but it does in .NET. To match in Java, pattern should look as (Java-string is given): "[a-z+\-]+".
NOTE: "(Java-string is given)" - just to explain double escapes in the expression.