如果我想在正则表达式中排除 /*,应该如何编写?
我已经尝试过以下代码:
但是却毫无效果...
我已经尝试过以下代码:
[^/[*]]
([^/][^*])
但是却毫无效果...
[^/[*]]
([^/][^*])
您必须匹配not /
,或者/后跟not *
:
([^/]|/[^*])+/?
/
字符? - Matt Ball/
或者 /
后面跟着的不是 *
的任何字符。 - orlp/
。 - Bart Kiers/
,如果包含,则不包含/
后面跟着/*
。在JavaScript中,x
不跟随y
的写法是x(?!y)
,因此:
/
:new RegExp('^[^/]*$')
,或者/
都不能后跟*
:new RegExp('^/(?!\\*)$')
(请注意,*
必须用\\
转义,因为*
是一个特殊字符。要结合这两个表达式:
new RegExp('^([^/]|/(?!\\*))*$')
/
字符,而不获取其他任何内容。从问题中可以看出,他想要除此之外的所有内容。 - eykanal在Java中,以下模式应该适用于您:
Pattern pt = Pattern.compile("((?<!/)[*])");
这意味着匹配 *
,但它之前没有出现 /
。
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: *
你不能否定一个正匹配吗?所以内核只是“/*”,但*需要通过反斜杠进行掩码处理,这本身需要进行掩码处理,并且模式可能会在前面或后面跟随某些内容,因此需要在/\\*
之前和之后加上.*:".*/\\*.*"
。
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
请查看http://mindprod.com/jgloss/regex.html#EXCLUSION
例如,使用[^"]或[^w-z]表示除引号和wxyz以外的任何字符