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

服務(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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩国产一区二区三区不卡 | 色依依视频视频在线观看 | 久久久久久久久女黄9999 | 色播艾小青国产专区在线播放 | 青草碰人人澡人人澡 | 欧美影院一区二区 | 国产全部视频 | 亚洲精品视频在线 | 精品久久洲久久久久护士免费 | 亚洲精品www久久久久久 | 精品国产麻豆免费人成网站 | 色综合久久天天综合观看 | 国产伦精一区二区三区视频 | free性泰国娇小videos | 色老板在线免费视频 | 2019国内自拍大神视频 | 国产成人www | 亚洲国产精品综合欧美 | 国产精品理论片在线观看 | 男人j放进女人的p免费看视频 | 无套内射在线观看THEPORN | 国产一区二区三区四卡 | 亚洲国产成人久久午夜 | 精品一区二区国语对白 | 羞羞答答免费人成黄页在线观看国产 | 亚洲精品一区二区观看 | 成人性爱视频在线观看 | 青草热久精品视频在线观看 | 国产精品欧美韩国日本久久 | 欧美一级在线视频 | 视频一本大道香蕉久在线播放 | 国产短视频精品一区二区三区 | 2020最新韩国理论三级0k | 成人免费体验区福利云点播 | 欧美free激情野战hd | 午夜小视频免费 | 亚洲欧美综合在线观看 | 四虎影视永久在线 | 手机在线观看国产精选免费 | 久久毛片视频 | 亚洲四虎 |