final String SINGLE_CHAR = "(\\?|≡|∧|<|>|\\||=|,|\\.|;|:|\\(|\\)|\\{|\\}|∈|∪|∩|\\+|\\*|%|/|\\-)|";
final String DOUBLE_CHAR = "([:<>!\\+\\*%\\-/]=|([/]\\*|[\\*]/)|\\+\\+|\\-\\-)|";
final String Variable = "([_a-zA-Z]+\\w*)";
final String Digit = "((\\d+\\.)?\\d+)|Φ";
以上是我在做词法分析时用到的正则表达式,请问除了这些以外的(比如说不合法的标识符等)可不可以用一个正则表示?或者把不匹配的也读出来呢
不然做词法分析的时候遇到非法的标识符时提示不了啊
多谢啦
final String DOUBLE_CHAR = "([:<>!\\+\\*%\\-/]=|([/]\\*|[\\*]/)|\\+\\+|\\-\\-)|";
final String Variable = "([_a-zA-Z]+\\w*)";
final String Digit = "((\\d+\\.)?\\d+)|Φ";
以上是我在做词法分析时用到的正则表达式,请问除了这些以外的(比如说不合法的标识符等)可不可以用一个正则表示?或者把不匹配的也读出来呢
不然做词法分析的时候遇到非法的标识符时提示不了啊
多谢啦
数字开头的或者¥a,#j,@s这些乱七八糟的我想用个正则表达式ERROR匹配出来
0a;
00a;
@sd $d #sa 以数字开头的和@#¥等开头的这些非法标识符读不出来
读出来以后是0,a,00,a,sd,d,sa
而且非法情况太多也不能列举完,用正则表示实在头痛
你做的那玩意有没有全半角要求?比如 ?? shift+? ^……shift+6 全半角有区别的
final String totalReg = Variable+DOUBLE_CHAR+SINGLE_CHAR+Digit+Error;
while((line=buf.readLine())!=null){
Pattern pattern=Pattern.compile(totalReg);
Matcher matcher=pattern.matcher(line);...我是用这个匹配的,楼上你说的那种匹配不成功的情况我考虑过啊,不过好像没有可以用的pattern或matcher函数可以用
value.addElement(matcher.group());
如果都不匹配(list到了最后),就用个打出他们或把他们存起来不就ok?