You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Benedikt Ritter <br...@apache.org> on 2015/08/05 07:51:03 UTC

Re: [LANG] Adding StringUtils replace by regular expression methods

Hello Loic,

see my comment on the other thread. When I get the time to release 3.5 I'll
have a look at the tickets, promise! ;-)

Regards and thank you,
Benedikt

2015-07-28 12:20 GMT+02:00 Loic Guibert <lf...@yahoo.fr>:

> Hello Benedikt,
> LANG version 3.5 being about to be released, have you had time to look
> at these 2 methods ?
>
> https://issues.apache.org/jira/browse/LANG-1139
> https://github.com/apache/commons-lang/pull/92
>
> Loic Guibert
> PGP : 0x65EB4F33
>
>
> Le 02/06/2015 10:24, Benedikt Ritter a écrit :
> > Hello Loic,
> >
> > I really appreciate your effort to get this code into lang. Thank you
> very
> > much!
> > Sorry that I'm unable to give you timely feedback on the proposed
> changes.
> > I'm pretty busy at work at the moment and I've almost zero time for OSS
> > right now :-(
> > I'll review the changes as soon as I have some more time.
> >
> > Sorry again for the inconvenience!
> >
> > Benedikt
> >
> > 2015-05-28 14:42 GMT+02:00 Loic Guibert <lf...@yahoo.fr>:
> >
> >> Hello,
> >> I implemented 2 null safe methods to replace into a String with regular
> >> expression :
> >>   - String replaceAll(String text, String regex, String replacement);
> >>   - String replaceFirst(String text, String regex, String replacement);
> >>
> >>
> >> The StringUtils.replacePattern(String source, String regex, String
> >> replacement) method adds Pattern#DOTALL option by default which may be
> >> undesired. Moreover, this methods is not null safe.
> >>
> >> I think it could be added to StringUtils.
> >> I opened a JIRA ticket (LANG-1139) and an associated Pull Request (#92)
> >>
> >>
> >> There is detail :
> >>
> >> /**
> >>  * <p>Replaces each substring of the text String that matches the given
> >> regular expression
> >>  * with the given replacement.</p>
> >>  *
> >>  * This method is a {@code null} safe equivalent to:
> >>  * <ul>
> >>  *  <li>{@code text.replaceAll(regex, replacement)}</li>
> >>  *  <li>{@code
> >> Pattern.compile(regex).matcher(text).replaceAll(replacement)}</li>
> >>  * </ul>
> >>  *
> >>  * <p>A {@code null} reference passed to this method is a no-op.</p>
> >>  *
> >>  * <p>Unlike in the {@link #replacePattern(String, String, String)}
> >> method, the {@link Pattern#DOTALL} option
> >>  * is NOT automatically added.
> >>  * To use the DOTALL option prepend <code>"(?s)"</code> to the regex.
> >>  * DOTALL is also know as single-line mode in Perl.</p>
> >>  *
> >>  * <pre>
> >>  * StringUtils.replaceAll(null, *, *)       = null
> >>  * StringUtils.replaceAll("any", null, *)   = "any"
> >>  * StringUtils.replaceAll("any", *, null)   = "any"
> >>  * StringUtils.replaceAll("", "", "zzz")    = "zzz"
> >>  * StringUtils.replaceAll("", ".*", "zzz")  = "zzz"
> >>  * StringUtils.replaceAll("", ".+", "zzz")  = ""
> >>  * StringUtils.replaceAll("<__>\n<__>", "<.*>", "z")      = "z\nz"
> >>  * StringUtils.replaceAll("<__>\n<__>", "(?s)<.*>", "z")  = "z"
> >>  * StringUtils.replaceAll("ABCabc123", "[a-z]", "_")       = "ABC___123"
> >>  * StringUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", "_")  = "ABC_123"
> >>  * StringUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", "")   = "ABC123"
> >>  * StringUtils.replaceAll("Lorem ipsum  dolor   sit", "( +)([a-z]+)",
> >> "_$2") = "Lorem_ipsum_dolor_sit"
> >>  * </pre>
> >>  *
> >>  * @param text  text to search and replace in, may be null
> >>  * @param regex  the regular expression to which this string is to be
> >> matched
> >>  * @param replacement  the string to be substituted for each match
> >>  * @return  the text with any replacements processed,
> >>  *              {@code null} if null String input
> >>  *
> >>  * @throws  PatternSyntaxException
> >>  *              if the regular expression's syntax is invalid
> >>  *
> >>  * @see String#replaceAll(String, String)
> >>  * @see java.util.regex.Pattern
> >>  * @see java.util.regex.Pattern#DOTALL
> >>  */
> >> public static String replaceAll(final String text, final String regex,
> >> final String replacement);
> >>
> >> /**
> >>  * <p>Replaces the first substring of the text string that matches the
> >> given regular expression
> >>  * with the given replacement.</p>
> >>  *
> >>  * This method is a {@code null} safe equivalent to:
> >>  * <ul>
> >>  *  <li>{@code text.replaceFirst(regex, replacement)}</li>
> >>  *  <li>{@code
> >> Pattern.compile(regex).matcher(text).replaceFirst(replacement)}</li>
> >>  * </ul>
> >>  *
> >>  * <p>A {@code null} reference passed to this method is a no-op.</p>
> >>  *
> >>  * <p>The {@link Pattern#DOTALL} option is NOT automatically added.
> >>  * To use the DOTALL option prepend <code>"(?s)"</code> to the regex.
> >>  * DOTALL is also know as single-line mode in Perl.</p>
> >>  *
> >>  * <pre>
> >>  * StringUtils.replaceFirst(null, *, *)       = null
> >>  * StringUtils.replaceFirst("any", null, *)   = "any"
> >>  * StringUtils.replaceFirst("any", *, null)   = "any"
> >>  * StringUtils.replaceFirst("", "", "zzz")    = "zzz"
> >>  * StringUtils.replaceFirst("", ".*", "zzz")  = "zzz"
> >>  * StringUtils.replaceFirst("", ".+", "zzz")  = ""
> >>  * StringUtils.replaceFirst("<__>\n<__>", "<.*>", "z")      = "z\n<__>"
> >>  * StringUtils.replaceFirst("<__>\n<__>", "(?s)<.*>", "z")  = "z"
> >>  * StringUtils.replaceFirst("ABCabc123", "[a-z]", "_")          =
> >> "ABC_bc123"
> >>  * StringUtils.replaceFirst("ABCabc123abc", "[^A-Z0-9]+", "_")  =
> >> "ABC_123abc"
> >>  * StringUtils.replaceFirst("ABCabc123abc", "[^A-Z0-9]+", "")   =
> >> "ABC123abc"
> >>  * StringUtils.replaceFirst("Lorem ipsum  dolor   sit", "( +)([a-z]+)",
> >> "_$2")  = "Lorem_ipsum  dolor   sit"
> >>  * </pre>
> >>  *
> >>  * @param text  text to search and replace in, may be null
> >>  * @param regex  the regular expression to which this string is to be
> >> matched
> >>  * @param replacement  the string to be substituted for the first match
> >>  * @return  the text with the first replacement processed,
> >>  *              {@code null} if null String input
> >>  *
> >>  * @throws  PatternSyntaxException
> >>  *              if the regular expression's syntax is invalid
> >>  *
> >>  * @see String#replaceFirst(String, String)
> >>  * @see java.util.regex.Pattern
> >>  * @see java.util.regex.Pattern#DOTALL
> >>  */
> >> public static String replaceFirst(final String text, final String regex,
> >> final String replacement);
> >>
> >>
> >> Regards,
> >>
> >> --
> >> Loic Guibert
> >> PGP : 0x65EB4F33
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> >> For additional commands, e-mail: dev-help@commons.apache.org
> >>
> >>
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>


-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter