Actually, in RE documentation is says:
A* Matches A 0 or more times (greedy)
A+ Matches A 1 or more times (greedy)
So in fact we should have the last match as well.
By the way, I would really like to contribute this code, as I need it
myself. Can I ?
Cheers,
Krzysztof
Scott Bronson wrote:
>
> > * filter.addAttribute("a*b","-");
> > * String text = "aaaabfooaaabgarplyaaabwackyb";
>
> > * Produces: -foo-garply-wacky-
>
> I hope not! There's no preceding a, so the last match shouldn't happen.
> It will produce -foo-garply-wackyb, right?
>
> (unless I'm missing something)
>
> - Scott
>
> ----- Original Message -----
> From: Krzysztof Zelazowski <[EMAIL PROTECTED]>
> To: ECS <[EMAIL PROTECTED]>
> Sent: Monday, November 20, 2000 7:27 AM
> Subject: RegexpFilter
>
> > Dear All,
> >
> > I have written a RegexpFilter, which I would like to contribute if you
> > find that it is of any use. Below you will find the source snippet. If
> > you will agree, that I'll commit it.
> >
> > Cheers,
> >
> > Krzysztof
> >
> >
> > /**
> > * This filter uses regexp to create expressions and allow
> > * you to do replace on those expressions.
> > *
> > * This filter works like the Perl subst function. Given a
> > * regular expression of "a*b", a String to substituteIn of
> > * "aaaabfooaaabgarplyaaabwackyb" and the substitution String "-", the
> > * resulting String returned by process(..) would be
> > "-foo-garply-wacky-".
> > *
> > * <pre><code>
> > * Filter filter = new RegexpFilter();
> > * filter.addAttribute("a*b","-");
> > * String text = "aaaabfooaaabgarplyaaabwackyb";
> > * String result = filter.process(text);
> > * System.out.println(result);
> > * </code></pre>
> > *
> > * Produces: -foo-garply-wacky-
> > *
> > * @author <a href="mailto:[EMAIL PROTECTED]">K.
> > Zelazowski</a>
> > * @version 1.0
> > */
> > public class RegexpFilter extends Hashtable implements Filter {
> >
> > public RegexpFilter()
> > {
> > super(4);
> > }
> >
> > /** Returns the name of the filter */
> > public String getInfo()
> > {
> > return "RegexpFilter";
> > }
> >
> > /**
> > * This method actually performs the filtering.
> > */
> > public String process(String to_process)
> > {
> > if ( to_process == null || to_process.length() == 0 )
> > return "";
> >
> > String substituteIn = to_process;
> > Enumeration enum = keys();
> >
> > while (enum.hasMoreElements()) {
> > RE r = (RE)enum.nextElement();
> > String substitution = (String)get(r);
> > substituteIn = r.subst(substituteIn, substitution);
> > }
> > return substituteIn;
> > }
> >
> > /**
> > * Add regular expression - substitution pair.
> > */
> > public Filter addAttribute(String expression,Object substitution)
> > {
> > try {
> > RE r = new RE(expression);
> > put(r, substitution);
> > }
> > catch (RESyntaxException e) {
> > return null;
> > }
> >
> > return(this);
> > }
> >
> > /**
> > * Get rid of the specified expression-substitution pair.
> > */
> > public Filter removeAttribute(String expression)
> > {
> > try
> > {
> > RE r = new RE(expression);
> > remove(r);
> > }
> > catch(Exception e)
> > {
> > }
> > return(this);
> > }
> >
> > /**
> > * Does the filter contains this expression?
> > */
> > public boolean hasAttribute(String expression)
> > {
> > try {
> > RE r = new RE(expression);
> > return containsKey(r);
> > }
> > catch (Exception e) {
> > }
> > return false;
> > }
> > }
> >
> >
> > --
> > ------------------------------------------------------------
> > To subscribe: [EMAIL PROTECTED]
> > To unsubscribe: [EMAIL PROTECTED]
> > Archives and Other: <http://java.apache.org/main/mail.html>
> > Problems?: [EMAIL PROTECTED]
>
> --
> ------------------------------------------------------------
> To subscribe: [EMAIL PROTECTED]
> To unsubscribe: [EMAIL PROTECTED]
> Archives and Other: <http://java.apache.org/main/mail.html>
> Problems?: [EMAIL PROTECTED]
--
------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Archives and Other: <http://java.apache.org/main/mail.html>
Problems?: [EMAIL PROTECTED]