java 正则表达式


编程语言 java


 >([\\u4e00-\\u9fa5])[^\\u4e00-\\u9fa5]*?([\\u4e00-\\u9fa5]+?)(\\*)?<", ">$1$2<


 <a href=\"(http:[\\s\\S]*?)\"( tar.*?|/])?>([\\s\\S]+?)[</a>|</td>]

这个正则表达式是什么意思?
求正解
谢谢?

java 正则表达式

蓝蓝露D轨迹 10 years, 1 month ago

[\\u4e00-\\u9fa5] 匹配一个中文字符
[^\\u4e00-\\u9fa5]*? 匹配非中文字符,非贪婪模式 ? ,可以先跳过的意思
(\\*)? 这里要匹配的是星号, ? 表示要么匹配一次星号,要么不匹配
$1$2 是引用前面表达式的意思,
$1 表示引用第一个分组,即 ([\\u4e00-\\u9fa5])
$2 表示引用第二个分组,即 ([\\u4e00-\\u9fa5]+?)
(真是奇葩)
引用的意思就是在这个位置要写的表达式和前面的一样。

准备代码测试的,发现题主的第一个正则是
>([\\u4e00-\\u9fa5])[^\\u4e00-\\u9fa5]*?([\\u4e00-\\u9fa5]+?)(\\*)?< 这部分,
后面的我猜应该是replace的内容。


 String regex = ">([\\u4e00-\\u9fa5])[^\\u4e00-\\u9fa5]*?([\\u4e00-\\u9fa5]+?)(\\*)?<";
Pattern pattern = Pattern.compile(regex);
String test1 = ">中english文<";
String test2 = ">中english###更长的中文<";
String test1Ret = pattern.matcher(test1).replaceAll(">$1$2<");
String test2Ret = pattern.matcher(test2).replaceAll(">$1$2<");
System.out.println(test1Ret); //>中文<
System.out.println(test2Ret); //>中更长的中文<

Doris answered 10 years, 1 month ago

Your Answer