java 正则表达式
高洛峰
高洛峰 2017-04-17 13:37:06
[Java讨论组]

编程语言 java

>([\\u4e00-\\u9fa5])[^\\u4e00-\\u9fa5]*?([\\u4e00-\\u9fa5]+?)(\\*)?<", ">$1$2<
<a href=\"(http:[\\s\\S]*?)\"( tar.*?|/])?>([\\s\\S]+?)[</a>|</td>]

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
ringa_lee

[\\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); //>中更长的中文<
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号