我对Regex有点陌生,我创建了regex,用于匹配数字、操作和标识符,但我无法处理如何识别下一个令牌是语言关键字,例如:
int or double or public .....。
这是我的代码:
enum TokenType{
NUMBER("-?[0-9]+.[0-9]+|-?[0-9]+"), //int and double
OPERATION("[*|/|+|-]"), // arithmetic operations
WHITESPACE("[ \t\f\r\n]+"), // white space
IDENTI("[_]*[A-Za-z][A-Za-z0-9]*[[_]*[A-Za-z0-9]*]*"),// string like _string_string_..
//......这里的问题是,像int这样的每个关键字都将成为一个标识符,例如,如果我们有
public static int NUMBER_OF_STUDENT;
输出: 公众身份证 静态IDENTI IDENTI 嗯..。伊丹蒂 .
如何创建另一个正则表达式来匹配像int, double, ....这样的关键字
如果需要的话,我会把这个程序的全部代码都贴出来。
发布于 2013-11-09 18:28:24
你的模式应该是:
"(int|double|public|...and so on)"没什么花哨的
发布于 2013-11-09 18:44:22
(?!int)(?!double)([a-z0-9]+)将与ntblah、itblah和dblah相匹配,但不匹配intblah和doubleblah。
(?! int )表示不匹配以int开头的任何内容。这将成为标识符的正则表达式,只需使用该语法来排除所有关键字。
https://stackoverflow.com/questions/19881437
复制相似问题