Regex 使用正则表达式进行字符串搜索
我正在尝试使用正则表达式(我刚刚开始)查找最多有1个不匹配字符的序列。例如,模式“nan”和文本“banana”,我想找到“ban”和“nan”,前者可以接受,但与“b”和“n”不匹配。我遇到的问题是,在创建正则表达式模式时,没有在需要的地方创建单独的通配符插入Regex 使用正则表达式进行字符串搜索,regex,string,search,Regex,String,Search,我正在尝试使用正则表达式(我刚刚开始)查找最多有1个不匹配字符的序列。例如,模式“nan”和文本“banana”,我想找到“ban”和“nan”,前者可以接受,但与“b”和“n”不匹配。我遇到的问题是,在创建正则表达式模式时,没有在需要的地方创建单独的通配符插入 final String[] patterns = {"[a-z]an", "n[a-z]n", "na[a-z]"}; final String text = "banana"; for(String pat
final String[] patterns = {"[a-z]an", "n[a-z]n", "na[a-z]"};
final String text = "banana";
for(String pattern : patterns)
{
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);
while(m.find())
{
System.out.println(m.start() + " " + m.group());
}
}
这是我作为一个测试,这是一种笨拙的方式得到我想要的(尽管有一些重复)。对于这种带有单个不匹配项的字符串搜索,正则表达式是一种有效的方法,还是应该尝试修改传统算法,如Horspool或KMP 不幸的是,正则表达式的设计允许您非常精确地匹配要匹配的模式,相反,几乎不支持近似匹配。然而,TRE库正是为此目的而设计的()