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/06/02 08:24:19 UTC
Re: [LANG] Adding StringUtils replace by regular expression methods
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
>
>
--
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter
Re: [LANG] Adding StringUtils replace by regular expression methods
Posted by Benedikt Ritter <br...@apache.org>.
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
Re: [LANG] Adding StringUtils replace by regular expression methods
Posted by 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