如何为以下目的编写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但是,我不知道如何不匹配整个单词和匹配字母数字字符。
发布于 2014-07-31 19:59:23
您需要在正则表达式中使用负前瞻性:
^(?!FOO$)[0-9A-Z]+$(?!FOO$)意味着如果它是FOO,则不匹配跟随模式[0-9A-Z]+,然后是输入结束。
发布于 2014-07-31 20:06:10
除了anubhava的答案之外,您还可以使用另一个选项,如:
\bFOO\b|([0-9A-Z]+)并使用捕获组来保持所需的内容。
工作演示
https://stackoverflow.com/questions/25067831
复制相似问题