commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Loic Guibert <lfdummy-apa...@yahoo.fr>
Subject Re: [LANG] Adding StringUtils replace by regular expression methods
Date Tue, 28 Jul 2015 10:20:31 GMT
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 <lfdummy-apache@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


Mime
View raw message