我正在开发一个应用程序,我需要处理包含电子邮件的文本文件。我需要文本中的所有标记,以下是标记的定义:
FREE!!
,$50
是令牌'' (点)和','逗号如果出现在数字之间,则被视为组成字符。例如:
192.168.1.1,$ 24,500
是令牌。
依旧......
请为我推荐一些Java的开源标记器,它们易于定制以满足我的需求。简单地使用StringTokenizer和regex就足够了吗?我也必须执行停止,这就是为什么我正在寻找一个开源标记器,它还会执行一些额外的操作,如停止,阻塞。
答案 0 :(得分:1)
前面有几条评论:
StringTokenizer是为保持兼容性而保留的旧类 原因虽然在新代码中不鼓励使用它。建议 任何寻求此功能的人都使用String的split方法 或者改为java.util.regex包。
至于正则表达式,它实际上取决于您的要求。鉴于上述情况,这可能有效:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Mkt {
public static void main(String[] args) {
Pattern p = Pattern.compile("([$\\d.,]+)|([\\w\\d!$]+)");
String str = "--- FREE!! $50 192.168.1.1 $24,500";
System.out.println("input: " + str);
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println("token: " + m.group());
}
}
}
这是一个示例运行:
$ javac Mkt.java && java Mkt
input: --- FREE!! $50 192.168.1.1 $24,500
token: FREE!!
token: $50
token: 192.168.1.1
token: $24,500
现在,您可能需要调整正则表达式,例如:
$24,500
为例。这适用于$24,500abc
或$24,500EUR
?192.168.1.1
应该包括在内。是否还应包含192,168.1,1
(包括.
和,
?)我想还有其他事情需要考虑。
希望这有助于您入门。