Re: Regex: Any character in character class
On 01.02.2013 21:14, Sebastian wrote:
Am 31.01.2013 04:27, schrieb Arne Vajh=F8j:
On 1/30/2013 4:34 AM, Sebastian wrote:
I want to match any sequence of characters, including line breaks, in=
a
suffix of a multi-line string.
I do not want to use Pattern.DOTALL, because line breaks are not
permissible everywhere. I cannot write [.]* because dot loses its
special meaning inside a character class.
I have come up with [\S\s]*
as meaning any sequence of non-whitespace or whitespace (incl.
line-breaks). Is there a better way?
Yes.
Do you always want to accept line breaks or not? If not then when?
the string I want to match basicallyhas two parts (a "protocol" and a
"selection expression"). I want to allow line breaks anywhere in the
selection expression, but not in the protocol.
Of course you can use DOTALL - as an embedded flag:
package rx;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Dotty {
private static final Pattern PAT =
Pattern.compile("proto.*(?s:sel.*)");
public static void main(String[] args) {
test("protoPselS");
test("protoPPselS\nS");
test("protoP\nPselS\nS");
}
public static void test(final CharSequence cs) {
System.out.println("cs=\"" + cs + "\"");
final Matcher m = PAT.matcher(cs);
if (m.matches()) {
System.out.println("Match: \"" + m.group() + "\"");
} else {
System.out.println("Mismatch");
}
System.out.println();
}
}
Kind regards
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/