📄 regmathertest3.java
字号:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import junit.framework.TestCase;
public class RegMatherTest3 extends TestCase {
/**
* 后向引用 backreferences
* 示例:取 HTML 元素的 outerHTML
* 向后引用会降低引擎的速度,因为它需要存储匹配的组。
* 如果你不需要向后引用,你可以告诉引擎对某个组不存储。例如:Get(?:Value)。
* 其中“(”后面紧跟的“?:”会告诉引擎对于组(Value),不存储匹配的值以供后向引用。
*/
public void testBackreferences() {
Pattern p = Pattern.compile("(<([^>]+)>.*</\\1>)");
String s = "This is a <EM>first</EM> test <STRONG>of All.</STRONG>";
Matcher m = p.matcher(s);
if (m.find()) {
//得到匹配
assertEquals(m.group(2), "<EM>first</EM>");
//全部替换
assertEquals(m.replaceAll("EL"), "This is a EL test EL");
}
}
public void testBackreferences2() {
Pattern p = Pattern.compile("^BEGIN:VBODY(.|\\n)+END:VBODY$", Pattern.MULTILINE);
String s = "BEGIN:VMSG\nVERSION:1.1\nX-IRMC-STATUS:READ\nX-IRMC-BOX:INBOX\nX-NOK-DT:20071024T144128Z\nX-MESSAGE-TYPE:DELIVER\nBEGIN:VCARD\nVERSION:3.0\nN:\nTEL:19824101627\nEND:VCARD\nBEGIN:VENV\nBEGIN:VBODY\nDate:24.10.2007 14:41:28\nLily:微风吹来浪漫的气息\n每一首情歌忽然充满意义\n我就在此刻突然见到你\nEND:VBODY\nEND:VENV\nEND:VMSG";
Matcher m = p.matcher(s);
if (m.find()) {
String text = m.group(0);
System.out.println(text.substring(37, text.length() - 10));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -