If I want to exclude /* in regex how would I write it?
I have tried:
[^/[*]]
([^/][^*])
But to no avail...
If I want to exclude /* in regex how would I write it?
I have tried:
[^/[*]]
([^/][^*])
But to no avail...
You must match not /, OR / followed by not *:
([^/]|/[^*])+/?
Use a negative lookahead to check that, if the input contains /, it does not contain / followed by /*. In JavaScript, x not followed by y would be x(?!y), so:
/: new RegExp('^[^/]*$'), or/ found must not be followed by *: new RegExp('^/(?!\\*)$') (note, the * must be escaped with a \\ since * is a special character.To combine the two expressions:
new RegExp('^([^/]|/(?!\\*))*$')
In Java following Pattern should work for you:
Pattern pt = Pattern.compile("((?<!/)[*])");
Which means match * which is NOT preceded by /.
String str = "Hello /* World";
Pattern pt = Pattern.compile("((?<!/)[*])");
Matcher m = pt.matcher(str);
if (m.find()) {
System.out.println("Matched1: " + m.group(0));
}
String str1 = "Hello * World";
m = pt.matcher(str1);
if (m.find()) {
System.out.println("Matched2: " + m.group(0));
}
Matched2: *
Can't you just deny a positive match? So the kernel is just "/*", but the * needs masking by backslash, which needs masking itself, and the pattern might be followed or preceded by something, so .* before and after the /\\* is needed: ".*/\\*.*".
val samples = List ("*no", "/*yes", "yes/*yes", "yes/*", "no/", "yes/*yes/*yes", "n/o*")
samples: List[java.lang.String] = List(*no, /*yes, yes/*yes, yes/*, no/, yes/*yes/*yes, n/o*)
scala> samples.foreach (s => println (s + "\t" + (! s.matches (".*/\\*.*"))))
*no true
/*yes false
yes/*yes false
yes/* false
no/ true
yes/*yes/*yes false
n/o* true
See http://mindprod.com/jgloss/regex.html#EXCLUSION
e.g. [^"] or [^w-z] for anything but quote and anything but wxyz