正则表达式-将搜索结果高亮

模拟:

将要查找的字符串中,指定字符替换为高亮的字符:

方法一:

package com.java.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HighLight {
    public static void main(String[] args) {
        String keyword = "a";
        String regexp = keyword + "+";
        String name = "啊abfac是的Aaa爱的的a我要是alkja卡和户A玉玉aaa很快就asa啊发A阿达ff";

        Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(name);
        StringBuffer sb = new StringBuffer();

        int start = 0;
        int end = 0;
        String temp = "";
        while(matcher.find()){
            start = matcher.start();
            sb.append(name.substring(end, start));
            temp = "<i class=\"highlight\">"+matcher.group()+"</i>";
            sb.append(temp);
            end = matcher.end();
        }

        sb.append(name.substring(end));

        System.out.println(sb.toString());

    }
}

返回结果:

啊<i class="highlight">a</i>bf<i class="highlight">a</i>c是的<i class="highlight">Aaa</i>爱的的<i class="highlight">a</i>我要是<i class="highlight">a</i>lkj<i class="highlight">a</i>卡和户<i class="highlight">A</i>玉玉<i class="highlight">aaa</i>很快就<i class="highlight">a</i>s<i class="highlight">a</i>啊发<i class="highlight">A</i>阿达ff

方法二:

package com.java.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HighLight2 {
    public static void main(String[] args) {
        String keyword = "a";
        String regexp = keyword;
        String name = "啊abfac是的Aaa爱的的a我要是alkja卡和户A玉玉aaa很快就asa啊发A阿达ff";

        Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(name);
        String resp = matcher.replaceAll("<i class=\"highlight\">"+keyword+"</i>");
        System.out.println(resp);
    }
}

结果:

啊<i class="highlight">a</i>bf<i class="highlight">a</i>c是的<i class="highlight">a</i><i class="highlight">a</i><i class="highlight">a</i>爱的的<i class="highlight">a</i>我要是<i class="highlight">a</i>lkj<i class="highlight">a</i>卡和户<i class="highlight">a</i>玉玉<i class="highlight">a</i><i class="highlight">a</i><i class="highlight">a</i>很快就<i class="highlight">a</i>s<i class="highlight">a</i>啊发<i class="highlight">a</i>阿达ff

但是问题是,将name中的大写的A也替换为小写了。

方法三:

package com.java.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HighLight3 {
    public static void main(String[] args) {
        String keyword = "a";
        String regexp = keyword + "+";
        String name = "啊abfac是的Aaa爱的的a我要是alkja卡和户A玉玉aaa很快就asa啊发A阿达ff";

        Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(name);
        StringBuffer sb = new StringBuffer();
        while(matcher.find()){
            matcher.appendReplacement(sb, "<i class=\"highlight\">"+matcher.group()+"</i>");
        }
        matcher.appendTail(sb);

        System.out.println(sb.toString());
    }
}

结果:

啊<i class="highlight">a</i>bf<i class="highlight">a</i>c是的<i class="highlight">Aaa</i>爱的的<i class="highlight">a</i>我要是<i class="highlight">a</i>lkj<i class="highlight">a</i>卡和户<i class="highlight">A</i>玉玉<i class="highlight">aaa</i>很快就<i class="highlight">a</i>s<i class="highlight">a</i>啊发<i class="highlight">A</i>阿达ff

很nice。又简单又快捷

--------

时间: 2024-10-14 05:07:39

正则表达式-将搜索结果高亮的相关文章

如何通过js使搜索关键词高亮

给你推荐通过jquery来实现高亮关键词.jquery.textSearch-1.0.js代码: (function($){ $.fn.textSearch =function(str,options){ var defaults ={ divFlag:true, divStr:" ", markClass:"", markColor:"red", nullReport:true, callback:function(){ returnfalse

在 Angular 中实现搜索关键字高亮

在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数据展示在页面中. 但是,在有些情况下,比如我们有一个搜索框,希望将搜索的关键字在正文中高亮出来,这时候就会感觉比较吃力了,filter 可以帮助我们处理这种情况. 实际上,很多时候,我们的数据是不能直接输出到 DOM 中的,典型的比如日期,或者货币等等,通常需要将我们内部的数据格式化之后,再输出到页

微信小程序--搜索关键词高亮

代码地址如下:http://www.demodashi.com/demo/14249.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html 1.基本需求. 实现搜索关键词高亮 2.案例目录结构 二.程序实现具体步骤 1.index.wxml代码 <!--index.wxml--> <view class="container"

Lucene系列:(7)搜索关键字高亮

在搜索结果中,将与关健字相同的字符用红色显示 TestHighlighter.java package com.rk.lucene.d_highlighter; import java.util.ArrayList; import java.util.List; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.query

(转)使用wildcards(通配符)和regular expressions(正则表达式)搜索

使用wildcards(通配符)搜索   https://wenku.baidu.com/view/5752bd2c2af90242a895e55b.html 使用正则表达式搜索   http://blog.csdn.net/lihuang319/article/details/52670535 使用通配符搜索 使用通配符查找和替换 例如,可用星号 (*) 通配符搜索字符串(使用 "s*d" 将找到 "sad" 和 "started" ). 1.

Android-微博短链接正则表达式与特殊文本高亮

做新浪微博第三方客户端时,对正文内容的特殊字符(如网页短链接.##话题.@人名等)进行高亮变色,需要用到以下几个正则表达式. 1 /**微博短链接正则表达式*/ 2 static final String regex_http = "http(s)?://([a-zA-Z|\\d]+\\.)+[a-zA-Z|\\d]+(/[a-zA-Z|\\d|\\-|\\+|_./?%=]*)?"; 3 static final String regex_at = "@[\\u4e00-\

短语搜索,高亮搜索

接着上节: http://www.cnblogs.com/spectrelb/p/7977051.html 短语搜索 找出一个属性中的独立单词是没有问题的,但有时候想要精确匹配一系列单词或者短语 . 比如, 我们想执行这样一个查询,仅匹配同时包含 "rock" 和 "climbing" ,并且 二者以短语 "rock climbing" 的形式紧挨着的雇员记录. 为此对 match 查询稍作调整,使用一个叫做 match_phrase 的查询 G

[转帖]vim搜索及高亮取消

https://www.cnblogs.com/soymilk2019/p/10744027.html 哎 竟然一直不知道. 1. 命令模式下,输入:/字符串 比如搜索user, 输入/user 按下回车之后,可以看到vim已经把光标移动到该字符处和高亮了匹配的字符串 2. 查看下一个匹配,按下n(小写n) 3. 跳转到上一个匹配,按下N(大写N) 4. 搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮? 命令模式下,输入:nohlsearch  也可以:set nohlsearch: 当

mysql必知必会--用正则表达式 进行搜索

正则表达式介绍 前两章中的过滤例子允许用匹配.比较和通配操作符寻找数据.对 于基本的过滤(或者甚至是某些不那么基本的过滤),这样就足够了.但 随着过滤条件的复杂性的增加, WHERE 子句本身的复杂性也有必要增加. 这也就是正则表达式变得有用的地方.正则表达式是用来匹配文本 的特殊的串(字符集合).如果你想从一个文本文件中提取电话号码,可 以使用正则表达式.如果你需要查找名字中间有数字的所有文件,可以 使用一个正则表达式.如果你想在一个文本块中找到所有重复的单词, 可以使用一个正则表达式.如果你