为了验证我的目的的正则表达式,我使用Scala控制台:
"REGEX".r.findFirstIn("exampleString").isDefinied
我有很多字符串,我想与正则表达式匹配。
每当String完全是“foo”或“bar”时,我希望上面的内容是假的。
我最接近的是^((?!foo|bar).)*$
但问题是,一旦它包含“foo”或“bar”,一切都是假的,尽管我希望“foof”是真的。
更新:
我确实需要这个正则表达式来配置脚本。所以我不能使用Scala方法或改变正则表达式的处理方式。
答案 0 :(得分:3)
为什么不允许那些不匹配^(foo|bar)$
的字符串?如果这不是一个选项,请尝试使用此正则表达式:^(?!^(foo|bar)$).*$
。
答案 1 :(得分:1)
这个怎么样?
scala> def isFooOrBar(s: String) = !s.matches("""foo|bar""")
isFooOrBar: (s: String)Boolean
scala> isFooOrBar("foo")
res4: Boolean = false
scala> isFooOrBar("bar")
res5: Boolean = false
scala> isFooOrBar("foof")
res6: Boolean = true
答案 2 :(得分:1)
此模式有效^(?!(foo|bar)$)
。一个测试例子:
import java.util.regex.Pattern;
object NotRE extends App {
val p = Pattern.compile("^(?!(foo|bar)$)");
val test = Seq("foo", "bar", "1foo", "foo1", "2bar", "bar2", "3bar3", "3foo3");
print(test map ((x: String) => (x, p.matcher(x).find())));
}