【发布时间】:2011-11-07 00:20:50
【问题描述】:
有没有什么方法可以使用 Java 显示除一组单词或数字范围之外的所有字符和字符串?例如:
正则表达式:
^(if|else),[0-9]
输入字符串:
if x <= 7
输出:
无法识别的令牌:
x , <=
由于“if”和7被否定,它们不会出现。
我可以在一个正则表达式中否定一组字符串和数字范围吗?
或者有没有其他方法可以显示不匹配的字符串?
我们的任务是显示已识别的标记,然后显示不匹配的标记。我已经研究了三天的正则表达式,但我仍然无法完成我的任务。提前感谢您的帮助。
【问题讨论】:
-
我认为你不能用正则表达式否定字符串,至少在 Java 中是这样。您必须编写一个匹配其他任何内容的正则表达式。例如,要匹配除
stack之外的任何字符串,您需要[^s].*|s[^t].*|st[^a].*|sta[^c].*|stac[^k].*|stack.+(允许使用stackXXX)。想象一个正则表达式来匹配除了几个单词之外的任何东西......一团糟。 -
顺便说一句,您在谈论令牌,但您没有说明它们是如何定义的。你的意思是令牌是用空格分割字符串的结果吗?那么,你想单独测试每个令牌吗?