编程语言 java
([\u4e00-\u9fa5])1?([\u4e00-\u9fa5]+?)(\)?<", ">$1$2<
http:[\s\S]?)"( tar.?|/])?>([\s\S]+?)[|]
这个正则表达式是什么意思?求正解
[\u4e00-\u9fa5]匹配一个中文字符
1*?匹配非中文字符,非贪婪模式?,可以先跳过的意思
(\*)?这里要匹配的是星号,?表示要么匹配一次星号,要么不匹配
$1$2是引用前面表达式的意思,
$1表示引用第一个分组,即([\u4e00-\u9fa5]),
$2表示引用第二个分组,即([\u4e00-\u9fa5]+?)
(真是奇葩)
引用的意思就是在这个位置要写的表达式和前面的一样。
准备代码测试的,发现题主的第一个正则是
([\u4e00-\u9fa5])2?([\u4e00-\u9fa5]+?)(\)?<这部分,
后面的我猜应该是replace的内容。
String regex = ">([\u4e00-\u9fa5])3?([\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); //>中更长的中文<
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。