开发者社区> 问答> 正文

java 正则表达式

编程语言 java
([\u4e00-\u9fa5])1?([\u4e00-\u9fa5]+?)(\)?<", ">$1$2<
http:[\s\S]?)"( tar.?|/])?>([\s\S]+?)[|]
这个正则表达式是什么意思?求正解


  1. \u4e00-\u9fa5

展开
收起
蛮大人123 2016-02-27 14:14:01 2424 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    [\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); //>中更长的中文<


    1. \u4e00-\u9fa5
    2. \u4e00-\u9fa5
    3. \u4e00-\u9fa5
    2019-07-17 18:48:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载