一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達式|

服務(wù)器之家 - 編程語言 - JAVA教程 - java使用正則表達式過濾html標簽

java使用正則表達式過濾html標簽

2020-07-06 14:26Devin Zhang JAVA教程

本篇文章主要介紹了java正則表達式過濾html標簽,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前段時間開發(fā)的時候要讀取一篇文章的簡介內(nèi)容(也就是前200個字符),使用了隱藏字段,可能有人就要問了,那后臺也是可以截取字符的啊,那是因為編輯器里面包含了html標簽,所以后臺就需要處理html標簽的正則表達式,前些天上網(wǎng)搜了下,發(fā)現(xiàn)有人寫好的一個類,給大家共享下,不要閑小弟落伍了...

java" id="highlighter_761545">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * <p>
 * Title: HTML相關(guān)的正則表達式工具類
 * </p>
 * <p>
 * Description: 包括過濾HTML標記,轉(zhuǎn)換HTML標記,替換特定HTML標記
 * </p>
 * <p>
 * Copyright: Copyright (c) 2006
 * </p>
 *
 * @author hejian
 * @version 1.0
 * @createtime 2006-10-16
 */
 
public class HtmlRegexpUtil {
 private final static String regxpForHtml = "<([^>]*)>"; // 過濾所有以<開頭以>結(jié)尾的標簽
 
 private final static String regxpForImgTag = "<\\s*img\\s+([^>]*)\\s*>"; // 找出IMG標簽
 
 private final static String regxpForImaTagSrcAttrib = "src=\"([^\"]+)\""; // 找出IMG標簽的SRC屬性
 
 /**
  *
  */
 public HtmlRegexpUtil() {
  // TODO Auto-generated constructor stub
 }
 
 /**
  *
  * 基本功能:替換標記以正常顯示
  * <p>
  *
  * @param input
  * @return String
  */
 public String replaceTag(String input) {
  if (!hasSpecialChars(input)) {
   return input;
  }
  StringBuffer filtered = new StringBuffer(input.length());
  char c;
  for (int i = 0; i <= input.length() - 1; i++) {
   c = input.charAt(i);
   switch (c) {
   case '<':
    filtered.append("&lt;");
    break;
   case '>':
    filtered.append("&gt;");
    break;
   case '"':
    filtered.append("&quot;");
    break;
   case '&':
    filtered.append("&amp;");
    break;
   default:
    filtered.append(c);
   }
 
  }
  return (filtered.toString());
 }
 
 /**
  *
  * 基本功能:判斷標記是否存在
  * <p>
  *
  * @param input
  * @return boolean
  */
 public boolean hasSpecialChars(String input) {
  boolean flag = false;
  if ((input != null) && (input.length() > 0)) {
   char c;
   for (int i = 0; i <= input.length() - 1; i++) {
    c = input.charAt(i);
    switch (c) {
    case '>':
     flag = true;
     break;
    case '<':
     flag = true;
     break;
    case '"':
     flag = true;
     break;
    case '&':
     flag = true;
     break;
    }
   }
  }
  return flag;
 }
 
 /**
  *
  * 基本功能:過濾所有以"<"開頭以">"結(jié)尾的標簽
  * <p>
  *
  * @param str
  * @return String
  */
 public static String filterHtml(String str) {
  Pattern pattern = Pattern.compile(regxpForHtml);
  Matcher matcher = pattern.matcher(str);
  StringBuffer sb = new StringBuffer();
  boolean result1 = matcher.find();
  while (result1) {
   matcher.appendReplacement(sb, "");
   result1 = matcher.find();
  }
  matcher.appendTail(sb);
  return sb.toString();
 }
 
 /**
  *
  * 基本功能:過濾指定標簽
  * <p>
  *
  * @param str
  * @param tag
  *   指定標簽
  * @return String
  */
 public static String fiterHtmlTag(String str, String tag) {
  String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>";
  Pattern pattern = Pattern.compile(regxp);
  Matcher matcher = pattern.matcher(str);
  StringBuffer sb = new StringBuffer();
  boolean result1 = matcher.find();
  while (result1) {
   matcher.appendReplacement(sb, "");
   result1 = matcher.find();
  }
  matcher.appendTail(sb);
  return sb.toString();
 }
 
 /**
  *
  * 基本功能:替換指定的標簽
  * <p>
  *
  * @param str
  * @param beforeTag
  *   要替換的標簽
  * @param tagAttrib
  *   要替換的標簽屬性值
  * @param startTag
  *   新標簽開始標記
  * @param endTag
  *   新標簽結(jié)束標記
  * @return String
  * @如:替換img標簽的src屬性值為[img]屬性值[/img]
  */
 public static String replaceHtmlTag(String str, String beforeTag,
   String tagAttrib, String startTag, String endTag) {
  String regxpForTag = "<\\s*" + beforeTag + "\\s+([^>]*)\\s*>";
  String regxpForTagAttrib = tagAttrib + "=\"([^\"]+)\"";
  Pattern patternForTag = Pattern.compile(regxpForTag);
  Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);
  Matcher matcherForTag = patternForTag.matcher(str);
  StringBuffer sb = new StringBuffer();
  boolean result = matcherForTag.find();
  while (result) {
   StringBuffer sbreplace = new StringBuffer();
   Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag
     .group(1));
   if (matcherForAttrib.find()) {
    matcherForAttrib.appendReplacement(sbreplace, startTag
      + matcherForAttrib.group(1) + endTag);
   }
   matcherForTag.appendReplacement(sb, sbreplace.toString());
   result = matcherForTag.find();
  }
  matcherForTag.appendTail(sb);
  return sb.toString();
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/devinzhang/archive/2012/05/09/2491619.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久黄色片 | 男女男精品网站免费观看 | 日本一区二区三区视频在线观看 | 国产成人在线免费观看 | 日韩一区二区三区四区五区 | 亚洲国产精品第一区二区三区 | 美女扒开腿让男生桶爽漫画 | 俄罗斯一级大片 | 亚洲欧美日韩国产精品影院 | 国产日本欧美亚洲精品视 | 91精品国产综合久久香蕉 | 黑人性xxxⅹxxbbbbb | 国产中文字幕 | 青草香蕉精品视频在线观看 | 国产成人91高清精品免费 | 亚洲精品久久啪啪网站成年 | 久久久久九九 | 国产香蕉97碰碰在线视频 | 欧美日韩视频在线第一区二区三区 | caoporn人人| 国产尤物视频 | 日韩一区视频在线 | 午夜dj影院在线观看完整版 | 网友自拍偷拍 | 男人搡女人视频免费看 | 黄动漫软件车车好快的车车 | 欧美专区在线视频 | 亚洲欧美一区二区三区在线观看 | 99久精品 | 国产性片在线观看 | 9久re在线观看视频精品 | 久久久久久久伊人电影 | 大ji吧快给我别停受不了视频 | 星空传媒在线视频 | 国产成人综合亚洲一区 | 欧美同性猛男videos | 大学第一次基本都没了 | 秋霞理论一级在线观看手机版 | 91午夜在线观看 | 国产一区二区精品久 | 肥胖女性大bbbbbb视频女厕 |