「java正则占位」正则占位符
本篇文章给大家谈谈java正则占位,以及正则占位符对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java 正则表达式用法
先回答楼主的正则表达式吧
一个是建表语句格式如下 :
create【空格若干】table 【表名和其他信息】
正则表达式如下:create\s+table\s+.+
第二个是建索引语句格式如下 :
create【空格和字母若干】index【空格和字母下划线等若干】
正则表达式如下:create[\sA-Za-z]+index[\sA-Za-z_]+
不过我认为楼主给定的限制不够细,像【空格和字母下划线等若干】这样的说法比较模糊,上面的正则表达式可以正常匹配正确的语句,但是对于错误语句的限制不够,还有进一步修改的余地。
在JAVA中使用正则表达式时,应该import下面两个类
import java.util.regex.Matcher;
import java.util.regex.Pattern;
另外"\"应该被替换成"\\"。
具体方法是:
String sql="create table test(id varchar(10) not null)"
String reg="create\\s+table\\s+.+";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(sql);
boolean b = m.matches();
得到的布尔值表示sql是否匹配正则表达式reg。
java正则表达式
在这一句中,可变字符常量sb是用来存放字符串"aa11bbb33cc55gg55yy"被替换后的字符串吗?
是的
替换后的数据类型是什么类型的?
StringBuffer
appendReplacement()方法是什么意思?
一个替换方法
appendReplacement(StringBuffer sb, String replacement)
java中的正则表达式
Java正则表达式 (img.*?)style=\".*?\" 替换成 $1
其中.*表示0个或0以上多个任意字符
.*?表示0个或0以上多个任意字符的非贪婪匹配,就是假如一个句子中有多个style,它匹配距离最近的那个style,同理后面的.*?匹配距离最近的双引号
$1表示反向引用,它代表的是正则表达式中的第一个小括号所括起来的分组的内容,如果有两个小括号括起来的内容,则分别用$1,$2表示它们(在替换后的字符串中)
完整的Java程序如下
123456public class CC { public static void main(String[] args) { String s="img src=\"file/img/2016/12-28/1234-25521482893088459.jpg\" title=\"1234.jpg\" alt=\"\" width=\"396\" height=\"271\" style=\"width: 396px; height: 271px;\"/"; System.out.println(s.replaceAll("(img.*?)style=\".*?\"", "$1")); }}
运行结果
img src="file/img/2016/12-28/1234-25521482893088459.jpg" title="1234.jpg" alt="" width="396" height="271" /
关于java的正则表达式的一些疑惑……
在JAVA中\是转义符,有些字符表示了一些特殊的用法,比如n,如果是\n,就把n转义成了特殊字符,\n在JAVA中就表示换行。
正则中,\d表示数字,\d中的\是真实的\,而到了JAVA的字符串中表示转义符,那怎么办呢?那我们就在\d前面再加一个\,再转义一次,就把原来的转义符取消了,就表示真正的\了。
.在正则中表示任何字符除了.本身,如何表示.本身呢?就需要在.前面加\,然而由于上述的原因,所以又需多加一个\。当你看JAVA写的正则时,你就把\\当一个\理解就可以了。
你可以理解为双重\,如果在正则中有个\的,在JAVA中,就把他变成两个\\,就是JAVA把他多加一层。
java 正则表达式请教高手
System.out.println("/1234abcd//////".replaceAll("(/\\w+)/*","$1"));
这样可以得到你要的结果,去掉尾部的斜杠。
这个表达式可以修改“/1234abcd////// /123asd// /567aaaaaa//”这样的好几个连起来的字符串,把每个匹配的末尾的斜杠都去掉。
表达式为:(/\\w+)/*
/匹配开头的/
\\w+是任意个字母与数字、下划线
后面再跟一个/*,匹配任意多个/
整个表达式匹配 /1234abcd、/1234abcd///////这样的字符串。
前面的捕获组捕获/1234abcd
然后用$1引用第一个捕获组,即/1234abcd,用它替换掉整个表达式所匹配的字符串。
即用/1234abcd替换掉/1234abcd///
如果给定的字符串只是像/1234abcd//////这样单个的关键字,那只用
replace("/+$","");
$表示行的结束,用/+$匹配末尾的任意个/,然后用空字符串替换掉它即可。
java正则占位的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于正则占位符、java正则占位的信息别忘了在本站进行查找喔。
发布于:2022-12-08,除非注明,否则均为
原创文章,转载请注明出处。