java模式匹配之蛮力匹配
/** * 模式匹配之蛮力匹配 */ package javay.util; /** * Pattern Match Brute-Force * @author DBJ */ public class PMBF { /** * Pattern Match Brute-Force * @param target 目标串 * @param pattern 模式串 * @return 模式串在目标串中第一次出现的位置 */ public static int patternMatch(String target, String pattern) { int targetLength = target.length(); int patternLength = pattern.length(); int idxTgt = 0; // 目标串中字符的位置 int idxPtn = 0; // 模式串中字符的位置 int index = 0; // 保存与模式串匹配ing的起始字符的位置 while(idxTgt < targetLength && idxPtn < patternLength) { //找到一个匹配的字符 if(target.charAt(idxTgt) == pattern.charAt(idxPtn)) { // 如果相等,则继续对字符进行后续的比较 idxTgt ++; idxPtn ++; } else { // 否则目标串从第二个字符开始与模式串的第一个字符重新比较 index ++; idxPtn = 0; idxTgt = index; } } // 匹配到一个,输出结果 if(idxPtn == patternLength) { //说明匹配成功 return index; } else { return -1; } } }
使用示例:
static int indexOf(char[] source,char[] target) { char first = target[0]; int max = (source.length - target.length); for (int i = 0; i <= max; i++) { /* Look for first character. */ if (source[i] != first) { while (++i <= max && source[i] != first); } /* Found first character, now look at the rest of v2 */ if (i <= max) { int j = i + 1; int end = j + target.length - 1; for (int k = 1; j < end && source[j] == target[k]; j++, k++); if (j == end) { /* Found whole string. */ return i ; } } } return -1; }
以上所述就是本文的全部内容了,希望大家能够喜欢。
这是一个示例文本:。我无法修改输入文本,我正在从文件中读取长字符串文本。 我想提取以下内容:,,, 为此,我编写了以下正则表达式模式: 我正在使用和类,但是我的Matcher无法使用前面提到的正则表达式找到模式。我在一些在线regex网站上用文本测试了这个regex,令人惊讶的是,它在那里工作。 我哪里做错了? 原始代码: 输出:未打印任何内容
一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常
主机权限和 内容脚本匹配 是基于匹配模式定义的一组 URL。匹配模式本质上是一个以允许的 schema(http,https,file 或ftp 开头)的URL,并且可以包含 “*” 字符。特殊模式 < all_urls > 匹配以允许的 schema 开头的任何 URL。 每个模式包含 3 个部分: schema - 例如,http 或file 或 * 注意:对文件 URL 的访问不是自动的。用
MySQL提供了一个标准的SQL模式匹配,和基于扩展的正则表达式的模式匹配Unix工具(如vi,grep,sed)一样。 SQL模式匹配可以使用“_“来匹配任意单个字符,”%“可以用来匹配任意数量(包含0个字符)的字符。在MySQL中,SQL模式匹配的大小写默认是不敏感的,以下有一些例子,当你在使用SQL模式时,不要使用 = 或 <>,而是使用LIKE 或 NOT LIKE。 要找到以字符“b"开
除了我们常见的控制语句之外,Rust还提供了一个更加强大的关键字——match 。但是,需要指出的一点是,match只是匹配,要发挥其全部威力,还需要模式的配合。本章,我们就将的对Rust的模式匹配进行一番探索。 本章内容: match关键字 模式 pattern
模式匹配 内容脚本可以作用到模式匹配定义好的URL集合上. 你能对manifest文件的内容脚本段的部分进行一个或多个模式匹配操作. 这里描述模式匹配语法 — 当你指定内容脚本将影响哪些URL时你需要遵循的规则. 任意一个模式匹配本质上都是一个以认可的协议(例如:http, https, file, ftp 或者 chrome-extension)开头的URL,只是URL你可以包含"*"字符. 这