|
Home
Articles/Links
Mugs, T-shirts
Comments/Raves
New in 1.5.3
A Game
An Online Test
Questions
Copyright/License
Download Free
If you need a non-LGPL version
You Can Buy!
Online help...
Quick Start
Tutorial Part 1
Tutorial Part 2
Tutorial Part 3
Tutorial Part 4
Tutorial Part 5
Tutorial Part 6
Examples
Support
FAQ
Documentation
Useful apps...
Java Beautifier
Code Colorizer
GUI Grep
Swing Grep
Other stuff...
Phreida
xmlser
 |
Things that have changed in version 1.5.3
Only bug fixing. This was a maintenance release.
Things that have changed in version 1.5.1
A serious bug was fixed. If two or three digits occurred in
a pattern together this got converted to a single octal value,
even if the sequence was not preceeded by a \. This was fixed.
Also, the sequences \x, \s, etc. were not being interpreted
when they occurred inside square brackets.
Things that have changed in version 1.5
When migrating from version 1.4, the biggest change to notice is
that the x, m and s flags are now supported.
If you don't know the signifcance of these flags, the m
is explained here,
and the s flag is explained here.
Previous versions of
pat behaved as if the m flag was always on.
To recover the old behavior, you can make the
static method call:
Regex.setDefaultMFlag(true);
|
Previous versions of package pat did not implement the perl
escape sequences \x, \c, \o, etc. The current version implements
them all.
The RegexReader and RegexWriter have been significantly updated.
The old design was quite clunky and did not work very well.
The newer version can really do what you would like it to do --
replacing on the string as it reads.
There have also been a few bug fixes, not many. Please
report any that you find.
Things that have changed in version 1.4
When migrating from previous versions of package pat, keep these things
in mind:
- The package name has changed from COM.stevesoft.pat to com.stevesoft.pat.
- The class for writing your own replacement rules (see
ReplaceRule)
with java code has a
new signature. The method apply(StringBuffer sb,RegRes rr)
has become apply(StringBufferLike sbl,RegRes rr).
The new method makes it possible for you to send the output of a replacement to
other kinds of buffers than a StringBuffer.
- If you are using custom patterns, the Validator now uses a StringLike instead
of a String. See the javadoc page.
- Previous versions of package pat relied on the compiler to recognize
carriage returns. The new version accepts will recognize "\\n" as a carriage return.
- The variables
ignoreCase, and dontMatchInQuotes are
no longer publically accessible. One can now set and get their values with methods
such as getIgnoreCase() and setIgnoreCase().
New Features
- Do you want to find the last occurrence of a pattern in a
String? Try the new reverseSearch
method of Regex.
- There are new special unicode patterns. (??uc) matches upper case and (??lc)
matches a lower case unicode character.
-
Package pat is now polymorphic. That means that anything conforming
to a StringLike
can be searched by Regex.
Here are a few examples:
We can search a file:
import com.stevesoft.pat.wrap.*;
...
// Retrieve a phone number from a RandomAccessFile
public String getPhoneNumber(RandomAccessFile raf) {
RandomAccessFileWrap rafw =
new RandomAccessFileWrap(raf);
Regex r =
new Regex("\b\\(\\d{3}\\)\\d{3}-\\d{4}\b");
if(rafw.search(r))
return r.stringMatched();
else
return null;
}
|
|
Warning! This new found flexibility can
help you to shoot yourself in the foot. Please check out this
item in the faq.
We can search a char[].
import com.stevesoft.pat.wrap.*;
...
// Retrieve a phone number from a char[].
public String getSSN(char[] ca) {
CharArrayWrap caw = new CharArrayWrap(ca);
Regex r = new Regex("\b\\d{3}-\\d{2}-\\d{4}\b");
// a social security number
if(rafw.search(r))
return r.stringMatched();
else
return null;
}
|
|
For more information, to see complete examples and to see how
to redirect the result of a replace from a StringBuffer to some
other object, see examples.html.
|