java - 如何不在正则表达式中包含特定字符串

标签 java regex

我需要在大学里构建某种“java 语法”编译器。 我想使用正则表达式来匹配变量类型和变量名称(int num 、 String str 等)。 所以我需要正则表达式来匹配其中一种 var 类型(String、int、char、boolean、double),然后至少有一个空格和 var 名称,但是 var name CAN NOT 是其中之一类型。 我怎么做?我试过:

(String|int|char|boolean|double)[\s]+([a-zA-Z]+[\w]*^(String|int|char|boolean|double))

我知道它不是 Java 正则表达式语法(只有一个 '\' 而不是两个),但我在 http://regexpal.com/ 中试过了它不起作用。

非常感谢!

最佳答案

负面前瞻

^ 将无法在您拥有它的地方工作(它是一个 anchor ,试图断言我们在字符串的开头)。但是你已经很接近了,如果你只是在后面的 ethe 括号的开头添加 ?!,它就会变成一个负前瞻:

(String|int|char|boolean|double)\s+(?!(?:String|int|char|boolean|double)\b)[a-zA-Z]+

See demo

  • 删除了 \s\w 的括号(不需要)。
  • 负向回顾 (?!(?:String|int|char|boolean|double)\b) 断言后面的不是您的类型之一。如果断言成功,引擎将继续匹配您的 var,由 [a-zA-Z]+
  • 指定
  • 有关环顾四周的更多信息,请参阅引用部分。

引用

关于java - 如何不在正则表达式中包含特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24259358/

相关文章:

java - 使用 Linkify 和正则表达式用 @ 提及用户

java - 用于避免基本数学运算符的正则表达式

javascript - Node.js semver 中的正则表达式非捕获组

java - 使用 Jackson 将转义的 json 解析为 JsonNode

Java Swing : Action Event to submit multiple variables

c++ - 拆分搜索短语的正则表达式

python - 如何在 Python 中通过 RegEx 查找具有相同前缀的字符串中的单词

Java 程序在 raspberry pi 上短时间后无错误地卡住

java - 如何将 Antlr4 生成的词法分析器/解析器集成到我的 java 项目中

java - 了解 Java 的基础知识,学习 Groovy 的正确方法是什么?