Merlin的魔力: 用新的正则表达式库解析字符序列 - 编程入门网
围字符的字符类。例如, [A-J] 表示从 A 到 J 的大写字母。
否定(Negation):脱字符(^)否定字符类的内容。例如, [^A-J] 表示除 A 到 J 之外的任何字符。 请参阅 Pattern API 文档(可以从 参考资料找到)了解关于序列的其它详细信息。 如何有效地使用模式 既然您已经了解了如何指定模式,我们就来使用它们吧。您需要让 Pattern 类编译它们,如下所示。注意,反斜杠字符(\)在 String 常量中需要转义。
有了一个编译好的模式后,您可以使用 Pattern 类根据模式把一个输入行分割为一系列单字,或者使用 Matcher 类执行一些更复杂的任务。下面说明了如何分割输入字符序列,其中使用的模式指定了分隔符,而不是字: String words[] = pattern.split(input); 如果您想在一个字符序列中多次匹配一个模式,上面的代码片段是一个很好的起点。但如果您想获取特定的输入,您将需要 Pattern 的 matcher() 方法。在给定某个输入时,这个方法将返回适当的 Matcher 类。接着,您使用 Matcher 实例遍历整个结果在输入序列中查找不同的模式匹配,或者使用 Matcher 实例作为查找-替换工具(后一种方法更好): Matcher matcher = pattern.matcher(input); 要根据整个序列匹配模式,请使用 matches() 。要确定是否只有序列的一部分匹配,请使用 find() :
Merlin的魔力: 用新的正则表达式库解析字符序列(3)时间:2011-02-02 IBM John Zukowski完整的示例 这两个类( Pattern 与 Matcher )就是整个模式匹配库。提出正确的正则表达式,然后使用 Matcher 类的结果,这就是这个模式匹配库要做的全部工作。在针对 Java 语言的关于正则表达式的专门书籍出现之前,请找一本关于 Perl 的好书来进一步了解特定的模式。清单 1 提供了一个完整的示例,该示例将在特定文件中查找从命令行作为输入而传入的最长单词。 清单 1.“最长的单词”示例 import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.charset.*; import java.util.*; import java.util.regex.*; public class Longest { public static void main(String args[]) { if (args.length != 1) { System.err.println("Provide a filename"); return; } try { // Map File from filename to byte buffer FileInputStream input = new FileInputStream(args[0]); FileChannel channel = input.getChannel(); int fileLength = (int)channel.size(); MappedByteBuffer buffer = channel.map( FileChannel.MapMode.READ_ONLY, 0, fileLength); // Convert to character buffer Charset charset = Charset.forName("ISO-8859-1"); CharsetDecoder decoder = charset.newDecoder(); CharBuffer charBuffer = decoder.decode(buffer); // Create line pattern Pattern linePattern = Pattern.compile(".*contentquot;, Pattern.MULTILINE); // Create word pattern Pattern wordBreakPattern = Pattern.compile("[\\p{Punct}\\s}]"); // Match line pattern to buffer Matcher lineMatcher = linePattern.matcher(charBuffer); // Holder for lo |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |