包括AlphaNumeric,但不要匹配特定的单词

时间:2014-07-31 19:56:03

标签: regex scala

如何为{:1>编写Regex

  

等于任何大写的字母数字[0-9A-Z]+一次或多次,但等于FOO

我看到^排除了以下任何字符,例如"排除xyz":

scala> val blockXYZ = """[^XYZ]+""".r
blockXYZ: scala.util.matching.Regex = [^XYZ]+

scala> "XXXX".matches(blockXYZ.toString)
res26: Boolean = false

scala> "AAA".matches(blockXYZ.toString)
res27: Boolean = true

scala> "AAAX".matches(blockXYZ.toString)
res28: Boolean = false

但是,我不确定如何匹配整个单词匹配字母数字字符。

2 个答案:

答案 0 :(得分:4)

您需要在正则表达式中使用否定前瞻:

^(?!FOO$)[0-9A-Z]+$

(?!FOO$)表示如果[0-9A-Z]+后跟输入结束,则不匹配以下模式FOO

答案 1 :(得分:0)

除了anubhava的答案,你可以使用另一个选项,如:

\bFOO\b|([0-9A-Z]+)

使用捕获组来保存您想要的内容

<强> Working demo