关键词:
- 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,‘n‘匹配字符 "n"。‘ ‘ (newline)匹配一个换行符。序列 ‘\‘ 匹配 "" 而"(" 则匹配 "("。 ‘ ’ (return)
- ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配‘ ‘ 或 ‘ ‘ 之后的位置。
- $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配‘ ‘ 或 ‘ ‘ 之前的位置。
- * 匹配前面的子表达式零次或多次。例如,zo* 能匹配"z" 以及 "zoo"。* 等价于{0,}。
- + 匹配前面的子表达式一次或多次。例如,‘zo+‘ 能匹配 "zo" 以及"zoo",但不能匹配 "z"。+ 等价于 {1,}。
- ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或"does" 中的"do" 。? 等价于 {0,1}。
- {n} n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}‘ 不能匹配"Bob" 中的 ‘o‘,但是能匹配 "food" 中的两个o。
- {n,} n 是一个非负整数。至少匹配n 次。例如,‘o{2,}‘ 不能匹配"Bob" 中的 ‘o‘,但能匹配 "foooood" 中的所有o。‘o{1,}‘ 等价于 ‘o+‘。‘o{0,}‘ 则等价于‘o*‘。
- {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个o。‘o{0,1}‘ 等价于 ‘o?‘。请注意在逗号和两个数之间不能有空格。
- ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串"oooo",‘o+?‘ 将匹配单个 "o",而 ‘o+‘将匹配所有 ‘o‘。
- 点“. ” 匹配除 " "之外的任何单个字符。要匹配包括 ‘ ‘在内的任何字符,请使用象 ‘[. ]‘ 的模式。
- x|y 匹配 x 或 y。“|”代表“或”的意思。例如,‘z|food‘能匹配 "z" 或 "food"。‘(z|f)ood‘ 则匹配"zood" 或 "food"。
- [xyz] 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]‘ 可以匹配"plain" 中的 ‘a‘。
- [^xyz] 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]‘ 可以匹配"plain" 中的‘p‘。
- [a-z] 字符范围。匹配指定范围内的任意字符。例如,‘[a-z]‘ 可以匹配 ‘a‘到 ‘z‘ 范围内的任意小写字母字符。
- [^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。例如,‘[^a-z]‘ 可以匹配任何不在 ‘a‘ 到‘z‘ 范围内的任意字符。
- 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er‘ 可以匹配"never" 中的‘er‘,但不能匹配 "verb" 中的 ‘er‘。
- B匹配非单词边界。‘erB‘ 能匹配 "verb" 中的 ‘er‘,但不能匹配"never" 中的 ‘er‘。
- cx匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将c 视为一个原义的 ‘c‘ 字符。
- d 匹配一个数字字符。等价于 [0-9]。 digital
- D 匹配一个非数字字符。等价于 [^0-9]。
- f匹配一个换页符。等价于 x0c 和 cL。
- 匹配一个换行符。等价于 x0a 和 cJ。
- 匹配一个回车符。等价于 x0d 和 cM。
- s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f v]。 (space)
- S匹配任何非空白字符。等价于 [^ f v]。
- 匹配一个制表符。等价于 x09 和 cI。
- v匹配一个垂直制表符。等价于 x0b 和 cK。
- w 匹配包括下划线的任何单词字符。等价于‘[A-Za-z0-9_]‘。 word
- W匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。
- um匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,‘(.)1‘匹配两个连续的相同字符。
- xn匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,‘x41‘ 匹配"A"。‘x041‘ 则等价于 ‘x04‘ &"1"。正则表达式中可以使用 ASCII 编码。
- un匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号(?)。
- (pattern)匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 ‘(‘ 或‘)‘。
- (?=pattern) 正向预查。例如windows(?=95/98/2000/NT),含义是匹配“windows”后面可以是“95”“98”“2000”或者“NT”。
- (?!pattern) 负向预查。例windows(?!95/98),含义是匹配“windows”后面不是“95”或“98”的其它字符串。
匹配所有Moth DD,YYYY格式的日期
|
|
|
匹配所有Month DD,YYYY格式的日期,定义月份值为第一个组
|
匹配所有123-12-1234格式的社会安全号码
|
|
|
匹配IP地址
d{1,3}.d{1,3}.
|
|
匹配FONT标记的所有属性
|
- ^ $
- * + ?
- { } ( ) [ ]
- / . |
- 转义字符
- () 圆括号, [] 方括号
- * + ? {n} {n,} {n,m} 限定符
- ^ $ 开始和结束标识
- | "或"操作
- matches() 是拿整个输入的字符串和定义的正则模式匹配; 刚好匹配到整串
- find() 是包含匹配, 整个输入的字符串包含定义的正则模式。匹配到子串
private List<String> getPatternList(String str, String regexp) {
List<String> list = new ArrayList<String>();
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
if (!list.contains(matcher.group()))
list.add(matcher.group());
}
return list;
}
public static String convertAngleTag(String str) {
str = str.replaceAll("<", "<");
str = str.replaceAll(">", ">");
return str;
}
工具类:UbbToHtml.java
package com.steven.helper;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UbbToHtml {
// 将ubb标签语言转成html
public static String convertUbbToHtml(String str) {
str = convertAngleTag(str);
str = convertCommentTag(str);
str = convertColorTag(str);
str = convertImgTag(str);
str = convertFieldsTag(str);
str = convertKeywordsTag(str);
str = convertJavaTag(str);
str = convertOtherTag(str);
return str;
}
// 将[code=img]和[/code]标签转成html
public static String convertImgTag(String str) {
if (str == null || str.length() == 0) {
return str;
}
String regexp = "(\[code=img\])([^\[]+)(\[/code\])";
Pattern pattern = Pattern.compile(regexp);
Matcher match = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = match.find();
while (result) {
match.appendReplacement(sb, "<img src="file:///android_asset/" + match.group(2) + "" width=‘230dp‘>");
result = match.find();
}
//match.appendTail(sb);
return sb.toString();
}
// 将[code=java]和[/code]标签转成html
public static String convertJavaTag(String str) {
if (str == null || str.length() == 0) {
return str;
}
String regexp = "(\[code=java\])
?([\s\S]+?)(\[/code\])";
Pattern pattern = Pattern.compile(regexp);
Matcher match = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = match.find();
while (result) {
match.appendReplacement(sb, "<div style=‘border:solid 1px #bbb;background:#eee;padding:8; margin:10 0 10 0;‘>" + match.group(2) + "</div>");
result = match.find();
}
match.appendTail(sb);
return sb.toString();
}
// 将[color=blue]标签转成html
public static String convertColorTag(String str) {
if (str == null || str.length() == 0) {
return str;
}
String regexp = "(\[color=blue\])([^\s]+)([\s]+?)";
Pattern pattern = Pattern.compile(regexp);
Matcher match = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = match.find();
while (result) {
match.appendReplacement(sb,"<div style=‘color:blue;margin:10 0 10 0;font-weight:bolder;‘>" + match.group(2) + "</div>");
result = match.find();
}
match.appendTail(sb);
return sb.toString();
}
// 将#[Fields]标签转成html
public static String convertFieldsTag(String str) {
if (str == null || str.length() == 0) {
return str;
}
String regexp = "(#\[Fields\])([^#]+?)#";
Pattern pattern = Pattern.compile(regexp);
Matcher match = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = match.find();
while (result) {
match.appendReplacement(sb,"<span style=‘color:red;‘>" + match.group(2) + "</span>");
result = match.find();
}
match.appendTail(sb);
return sb.toString();
}
// 将#[Keywords]标签转成html
public static String convertKeywordsTag(String str) {
if (str == null || str.length() == 0) {
return str;
}
String regexp = "(#\[Keywords\])(\w+[\s]?)";
Pattern pattern = Pattern.compile(regexp);
Matcher match = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = match.find();
while (result) {
match.appendReplacement(sb,"<span style=‘color:#900;‘>" + match.group(2) + "</span>");
result = match.find();
}
match.appendTail(sb);
return sb.toString();
}
// 将#[Comments]标签转成html
public static String convertCommentTag(String str) {
if (str == null || str.length() == 0) {
return str;
}
String regexp = "(#\[Comments\]//)([^#]+)";
Pattern pattern = Pattern.compile(regexp);
Matcher match = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = match.find();
while (result) {
match.appendReplacement(sb, "<div>//" + match.group(2) + "</div>");
result = match.find();
}
match.appendTail(sb);
return sb.toString();
}
// 将
换行标签及其他标签转成html
public static String convertOtherTag(String str) {
str = str.replaceAll("#\}", "<br/>}");
str = str.replaceAll("#", "");
str = str.replaceAll("
", "<br/>");
return str;
}
// 将左尖括号和右尖括号转成实体符号<和>。在html标签语言中,“<”和“>”会被认为是html标记。因此要先将其替换。
public static String convertAngleTag(String str) {
str = str.replaceAll("<", "<");
str = str.replaceAll(">", ">");
return str;
}
}
//调用页面只需要调用:String newStr = UbbToHtml.convertUbbToHtml(需要替换的字符串); 即可。
匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
只能输入数字:“^[0-9]*$”
只能输入n位的数字:“^d{n}$”
只能输入至少n位数字:“^d{n,}$”
只能输入m-n位的数字:“^d{m,n}$”
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入非零的正整数:“^+?[1-9][0-9]*$”
只能输入非零的负整数:“^-[1-9][0-9]*$”
只能输入长度为3的字符:“^.{3}$”
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
只能包含字符、数字和下划线。
验证是否含有^%&’,;=?$”等字符:“[^%&’,;=?$x22]+”
只能输入汉字:“^[u4e00-u9fa5]{0,}$”
验证身份证号(15位或18位数字):“^d{15}|d{}18$”
验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/< (.*)>.*|< (.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
- 整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$
- 只能输入数字:"^[0-9]*$"。
- 只能输入n位的数字:"^d{n}$"。
- 只能输入至少n位的数字:"^d{n,}$"。
- 只能输入m~n位的数字:。"^d{m,n}$"
- 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
- 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
- 只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
- 只能输入非零的正整数:"^+?[1-9][0-9]*$"。
- 只能输入非零的负整数:"^-[1-9][]0-9"*$。
- 只能输入长度为3的字符:"^.{3}$"。
- 只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
- 只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
- 只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
- 只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
- 只能输入由数字、26个英文字母或者下划线组成的字符串:"^w+$"。
- 验证用户密码:"^[a-zA-Z]w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
- 验证是否含有^%&‘,;=?$"等字符:"[^%&‘,;=?$x22]+"。
- 只能输入汉字:"^[u4e00-u9fa5]{0,}$"
- 验证Email地址:"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"。
- 验证InternetURL:"^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$"。
- 验证电话号码:"^((d{3,4}-)|d{3.4}-)?d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
- 验证身份证号(15位或18位数字):"^d{15}|d{18}$"。
- 验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
- 验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
- 匹配中文字符的正则表达式: [u4e00-u9fa5]
- 匹配双字节字符(包括汉字在内):[^x00-xff]
- 匹配空行的正则表达式: [s| ]*
- 匹配html标签的正则表达式:<(.*)>(.*)</(.*)>|<(.*)/>
- 匹配首尾空格的正则表达式:(^s*)|(s*$)
java----正则表达式基础及相关应用(代码片段)
正则表达式是Java、Php等编程语言中相当重要的一环,在实际应用程序代码中相当广泛,更是网络安全领域中不可或缺的一点。下面总讲一下正则表达式的基础知识以及相关应用 什么是正则表达式:正则表达... 查看详情
shell脚本——正则表达式(包含grep详细介绍及应用)(代码片段)
正则表达式正则表达式的作用前言案例:使用^和$判断用户输入的是否是数字基础正则表达式元字符基础正则表达式元字符案例扩展正则表达式元字符扩展正则表达式元字符案例正则表达式元字符综合案例三剑客grep详解grep的... 查看详情
grep之正则表达式的理解及应用
正则表达式在本周学习中是个难点和重点,其中难免会有很多坑,也难免会不停的往里跳,当跳的比较多了也就长记性了,通过很多次练习慢慢也就能发现其中暗藏玄机,成功的避开大坑选择往小坑里跳了,我相信在以后的... 查看详情
grep之正则表达式的理解及应用
正则表达式在本周学习中是个难点和重点,其中难免会有很多坑,也难免会不停的往里跳,当跳的比较多了也就长记性了,通过很多次练习慢慢也就能发现其中暗藏玄机,成功的避开大坑选择往小坑里跳了,我相信在以后的... 查看详情
正则表达式re模块的基础及简单应用(代码片段)
...独有的匹配字符串的模块该模块中的很多功能是基于正则表达式实现二、正则表达式的基础语法元字符匹配内容说明.匹配除换行符以外的任意字符w匹配字母或数字或下划线s匹配任意的空白符d匹配数字匹配一个换行符 匹配一个... 查看详情
21.egrep进阶及文本处理工具应用
...文本过滤工具(模式:pattern)工具; grep:基本正则表达式,-E,-F egrep:扩展正则表达式,-G,-F fgrep:不支持正则表达式egrep: 支持扩展的正则表达式实现类似于grep文本过滤功能:grep-E grep[OPTIONS]PATTERN[FILE...... 查看详情
通配符与正则表达式元字符的理解及grep的实例应用
什么是通配符(glob)? 通配符是Linux shell中用来描述(匹配)不确定字符的特殊符号.看看具体通配符是如何描述字符? * 代表任意字符任意次数 ?&nbs... 查看详情
正则表达式特殊符号及用法
参考技术APython3正则表达式特殊符号及用法(详细列表)正则表达式的强大之处在于特殊符号的应用,特殊符号定义了字符集合、子组匹配、模式重复次数。正是这些特殊符号使得一个正则表达式可以匹配字符串集合而不只是一... 查看详情
正则表达式及r字符串处理之终结版
转载于: 正则表达式及R字符串处理之终结版0.动机:为什么学习字符串处理传统的统计学教育几乎没有告诉过我们,如何进行文本的统计建模分析。然而,我们日常生活中接触到的大部分数据都是以文本的形式存在。文本分... 查看详情
正则表达式及grep
正则表达式及grep #以下所有的举例是用正则表达式的方式 #正则表达式#由一类特殊字符及文本所编写的模式#分两类: 基本正则表达式:BRE 扩展正则表达式:ERE 字... 查看详情
c#正则表达式编写及验证方法
01—前言 正则表达式应用很广泛,应该大多人都接触过了,这个语法规则既多又凌乱,每次用的时候都得重新看一遍语法,真的是让人头疼啊!但是实际上我们并不要掌握很多的符号用法规则,牢记... 查看详情
grep及扩展正则表达式
正则表达式有两类,分为基本正则表达式和扩展正则表达式,是使用命令egrep来使用扩展正则表达式,它与grep很多功能相同,仅在元字符上实现了些扩展,在元字符的表示上与基本正则表达式略不同。1.命令格式:egrep[option]patter... 查看详情
python应用实战系列-正则表达式大全
...高级教程(附源码)tableau可视化数据分析高级教程正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的... 查看详情
javascript属性及正则表达式(代码片段)
目录offset、client、scroll属性offsetclientscroll正则表达式什么是正则表达式正则表达式的特点正则表达式的创建正则表达式的检验正则表达式的修饰符模式修饰符边界符预定义符转义特殊字符字符类字符组合取反符量词符括号字符正... 查看详情
grep及正则表达式
grep及正则表达式详解·grep 即GlobalResearch,根据模式(pattern->文本字符和正则表达式的元字符组成的匹配条件),搜索文本,并将符合模式的文本行显示出来的工具,相应的还有egrep和fgrep,使用格式:grep[options]pa... 查看详情
正则表达式与扩展正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。通常被用来检索、替换那些符合... 查看详情
正则表达式与扩展正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。通常被用来检索、替换那些符合... 查看详情
js正则及常用方法函数总结(代码片段)
正则表达式作为一种匹配处理字符串的利器在很多语言中都得到了广泛实现和应用,web开发本质上是处理字符串(服务端接受请求处理后拼接字符串作为响应,这在早期的CGI编程中最明显,然后客户端解析字符串进行渲染和执行... 查看详情