Java正则反向引用

1)通过\1来引用第一个组中的

public static void main(String[] args) {
String content="<tr>hello world!</tr>";
String regextStr="<(\\w+)>.*?</\\1>";
Pattern pattern=Pattern.compile(regextStr, Pattern.CASE_INSENSITIVE);
Matcher matcher =pattern.matcher(content);
if(matcher.find()){
System.out.println(matcher.group());
}else{
System.out.println("no found");
}
 
}

2)通过$1等来引用

str = str.replaceAll("<!--#include virtual=\"/photosetssi/(\\d+).html(?:\\?\\w+)*\"-->", "<p>@@IMGGROUP=\"" + channelid + "|$1\"@@</p>");
时间: 2024-08-03 15:40:26

Java正则反向引用的相关文章

前端双引号单引号,正则反向引用,js比较jq

1.js,jq,css,html属性必须双,如果同时出现需要嵌套使用,属性的规范是双但是也可以用单测试有效 单引号现象举例:jq中获取元素标签是单引号:$('input').click:弹出也是单引号: alert('aaaa'):jq根据id获取元素和设置css都一般用单引号:$('#box').css('color', 'red'); 上述两种情况全部换成双引号也是行的!2.分号的用法: {}作为函数体一般是不需要分号结束的,()一般需要分号结束,除非作为一个函数的参数就不需要分号:3.js

正则——反向引用

反向引用:捕获组捕获到的内容,不仅可以在正则表达式外部通过程序进行引用,也可以在正则表达式内部进行引用,这种引用方式就是反向引用 //反向引用 var str='#1234'; var re=/#(\d+)/; re.test(str); console.log(RegExp.$1); //反向引用实现调换字符串中两个单词的顺序 var changeStr='123 456', re=/(\b\d+\b) (\b\d+\b)/, newStr=changeStr.replace(re,'$2 $

sublime text 替换功能使用反向引用 replace with using

比如文字是: Hello my name is bob find what 那里是: my name is (\w+) replace with 那里是: my name used to be $1 点replace,就可以把文字变为: Hello my name used to be bob 其中$1是正则的反向引用,它引用了查找条件里的(\w+)

Java对象及其引用 (1)

Java对象及其引用 [文章转载自:http://zwmf.iteye.com/blog/1738574] 说明:所有转载为个人学习存档使用,凡转载内容均注明转载出处.以后不再说明. 关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没法很好地理解下面的面向对象技术.把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路. 为便于说明,我们先定

Java正则表达中Greedy Reluctant Possessive 的区别

上一篇文章<编程思想之正则表达式 >中讲了正则表达式的原理.使用方法和常见的正则表达式总结,本文将进一步探讨Java正则表达中Greedy.Reluctant.Possessive三种策略的区别. 从Java的官方文档http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html中我们可以看到,正则表达式表示数量词的符号有三套,分别是Greedy(贪婪的).Reluctant(勉强的)和Possessive(独占的).

JScript 中的反向引用和使用反向引用

正则表达式的最重要功能之一是存储匹配的模式的一部分以供以后重新使用的能力.您可能想起,若在正则表达式模式或模式的一部分两侧加上括号,就会导致表达式的一部分被存储到临时缓冲区中.可以通过使用非捕获元字符 ?:.?= 或 ?! 来重写捕获. 每个捕获的子匹配项按照它们在正则表达式模式中从左到右出现的顺序存储.缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式.可以使用 \n 来访问每个缓冲区,其中 n 是标识特定缓冲区的一位或两位十进制数字. 反向引用的最简单的.最有用的应用之一,是提供查找

backreference Oracle正则表达式中的反向引用

这是Oracle对正则表达式的backreference的描述 从定义中可以看到,当匹配表达式中已()的形式将一个子串包含起来,后面就可以以\?的形式来引用.\1对应第一个(),\2对应第二个... 反向引用的引入使得正则表达式的匹配功能变得更加强大,介绍两个在oracle正则函数中的应用 regexp_like regexp_like('1211233','^([0-9])(\d)\1\1\2(\d)\3$') 上面这个例子中,匹配表达式里,\1表示第一个([0-9]),这个表达式要判断字符串

Java对象与引用

总结: 1. 基本数据类型的赋值不是引用,系统会自动创建两个独立的对象(内存空间) 2. 引用的赋值会覆盖两者在内存中的地址(即将两个对象合二为一),而基本数据类型的赋值不会 3. 引用存放在stack, 对象存放在heap.对象是引用的实体,我们日常看到的都是引用 对象引用 我们沿用之前定义的Human类,并有一个Test类: public class Test { public static void main(String[] args) { Human aPerson = new Hum

Java正则零宽断言出现PatternSyntaxException异常

今天在写正则的时候发现Java正则使用零宽断言(?<!exp) 匹配前面不是exp的位置,报出了一个异常: Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 26 (?<=<img[^>]*src="[^"]*")