首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含AlphaNumeric,但不要匹配特定的单词

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

Stack Overflow用户
提问于 2014-07-31 19:56:03
回答 2查看 69关注 0票数 2

如何为以下目的编写Regex

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

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

代码语言:javascript
复制
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

但是,我不知道如何不匹配整个单词和匹配字母数字字符。

EN

回答 2

Stack Overflow用户

发布于 2014-07-31 19:59:23

您需要在正则表达式中使用负前瞻性:

代码语言:javascript
复制
^(?!FOO$)[0-9A-Z]+$

(?!FOO$)意味着如果它是FOO,则不匹配跟随模式[0-9A-Z]+,然后是输入结束。

票数 4
EN

Stack Overflow用户

发布于 2014-07-31 20:06:10

除了anubhava的答案之外,您还可以使用另一个选项,如:

代码语言:javascript
复制
\bFOO\b|([0-9A-Z]+)

并使用捕获组来保持所需的内容。

工作演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25067831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档