我想在java代码中匹配字符串,用正则表达式,代码应该怎么写

我想在java代码中匹配字符串,用正则表达式,代码应该怎么写,第1张

1、java代码匹配汉字正则:[\u4E00-\u9FA5]+

2、java代码匹配汉字和字母正则[\u4E00-\u9FA5]+[a-zA-Z]+

3、js中只可以输入汉字:

function checkChinese(s)

{

var reg=/[\u4E00-\u9FA5]/g;

if (!regtest(s)){alert("只允许输入汉字!");}

}

括号 或匹配

在正则表达式中 由于[]号只能做单个元素的匹配 这样会限制正则表达式的作用 如何做到多个元素的匹配呢用()实现

()可以进行多个元素的匹配 例如:t(a|e|i|o|oo)n |在正则表达式中代表 或 的意思 即匹配的字符串只要满足()

中任意一项元素的匹配 该正则表达式则返回true 见代码示例:

public class RegExp {

     private Pattern patt;

     private Matcher matcher;

   /

      括号 或匹配:想要匹配 toon 可以使用 | *** 作符 | *** 作符的基本意义就是 或 运算

      要匹配 toon 使用 t(a|e|i|o|oo)n 正则表达式

      不能使用方扩号 因为方括号只允许匹配单个字符;必须使用圆括号 ()

      @param regStr

      @param regex

      @return

      /

     public boolean bracketReg(String regStr String regex){

         return monRegExp(regStr regex);

     }

   private boolean monRegExp(String regStr String regex){

         boolean wildcard_Res=false;

         patt=pile(regex);

         matcher=patt matcher(regStr);

         wildcard_Res= matcher find();

         return wildcard_Res;

     }

}

public class TestRegExp {

     public static void main(String[] args) {

         RegExp re=new RegExp();

         boolean wildcard_Res=false;

      //括号 或匹配

         wildcard_Res=re bracketReg( toon t(aoe|oo)n );

         System out println(wildcard_Res);

         //输出:wildcard_Res=true

}

注:在用()进行匹配时 凡是在()中有多个元素连续紧挨着出现时 必须这几个元素在匹配的字符串中也连续紧挨着出现 且不能出现多余的元素 否则匹配不会成功 见代码示例:

  public class RegExp {

       private Pattern patt;

       private Matcher matcher;

     /

        括号 或匹配:想要匹配 toon 可以使用 | *** 作符 | *** 作符的基本意义就是 或 运算

        要匹配 toon 使用 t(a|e|i|o|oo)n 正则表达式

        不能使用方扩号 因为方括号只允许匹配单个字符;必须使用圆括号 ()

        @param regStr

        @param regex

       @return     /

      public boolean bracketReg(String regStr String regex){

          return monRegExp(regStr regex);

      }

     private boolean monRegExp(String regStr String regex){

          boolean wildcard_Res=false;

          patt=pile(regex);

          matcher=patt matcher(regStr);

          wildcard_Res= matcher find();

          return wildcard_Res;

      }

  }

   public class TestRegExp {

       public static void main(String[] args) {

           RegExp re=new RegExp();

           boolean wildcard_Res=false;

       //括号 或匹配

           wildcard_Res=re bracketReg( taoehn t(aoe|oo)n );

           System out println(wildcard_Res);

           //输出:wildcard_Res=false

lishixinzhi/Article/program/Java/hx/201311/25639

你应该用Java的匹配程序,而不是用切分函数来处理匹配的问题

完整的Java匹配程序如下

import javautilregexMatcher;

import javautilregexPattern;

public class C {

 public static void test(String msg){

  Pattern p=Patterncompile("\\(\\)");

  Matcher m=pmatcher(msg);

  while(mfind()){

   Systemoutprintln(mgroup());

  }

 }

 public static void main(String[] args) {

  test("Message0(color=RED,cmd=/t1)Message1(color=RED,cmd=/t2)");

 }

}

运行结果

Message0(color=RED,cmd=/t1)

Message1(color=RED,cmd=/t2)

在while(matfind())上面添加一个变量String tmp = "";

然后while循环里面这样写:

while(matfind()){

    Systemoutprintln(matgroup(1));

    if(tmpequals("")){

        Systemoutprintln("前后间隔0毫秒");

        tmp = matgroup(1);

        continue;

    }

    DateFormat format = new SimpleDateFormat("HH:mm:ssSSS");

    Date one = formatparse(tmp);

    Date two = formatparse(matgroup(1));

    Systemoutprintln("前后间隔" +  (twogetTime() - onegetTime()) + "毫秒");

    tmp = matgroup(1);

}

修改一下答案:

顺便写了一个你第二张图的源代码:

public static void main(String[] args) throws InterruptedException {

Date one = new Date(),first = new Date();

DateFormat format = new SimpleDateFormat("HH:mm:ssSSS");

while(true){

Date two = new Date();

Systemoutprintln(

formatformat(two) + "\t前后间隔=" + (twogetTime()-onegetTime()) + "(单位毫秒)总耗时=" + (twogetTime() - firstgetTime()) + "(单位毫秒)" 

);

one = two;

// 如果想执行的慢一点把下面注释的代码放开

// ThreadcurrentThread()sleep(100);

}

}

Java正则表达式:@@text_\\w+@@

替换为:@@text@@

完整的Java正则匹配程序如下:

public class AA {

 public static void main(String[] args) {

  String type="<ul class=\"ul1\">"+  "<li class=\"li2\"><span class=\"s2\"></span><span class=\"s3\">发布机关</span><span class=\"s1\">:@@text_gear@@</span></li>"+  "<li class=\"li2\"><span class=\"s2\"></span><span class=\"s3\">发布科室</span><span class=\"s1\">:@@text_kroom@@</span></li>"+  "<li class=\"li2\"><span class=\"s2\"></span><span class=\"s3\">发布日期</span><span class=\"s1\">:@@text_createdate@@</span></li></ul>";

  String s=typereplaceAll("@@text_\\w+@@", "@@text@@");

  Systemoutprintln(s);

 }

}

运行结果:

<ul class="ul1"><li class="li2"><span class="s2"></span><span class="s3">发布机关</span><span class="s1">:@@text@@</span></li><li class="li2"><span class="s2"></span><span class="s3">发布科室</span><span class="s1">:@@text@@</span></li><li class="li2"><span class="s2"></span><span class="s3">发布日期</span><span class="s1">:@@text@@</span></li></ul>

能匹配任何字符串,比如1、a、sdf、3adfs、kfgfh等等,也能匹配m1、wapdd等m、wap开头的。但是排除m、wap的情况。

括号匹配问题:大部分情况是有括号和花括号在一起的一对一对的,就跟情侣一样的。

然后分号就是和括号一对一的出现的

凡出现左括弧,则进栈。

凡出现右括弧,首先检查栈是否空若栈空,则表明该“右括弧”多余,否则和栈顶元素比较。若相匹配,则“左括弧出栈”, 否则表明不匹配。                             

表达式检验结束时,若栈空,则表明表达式中匹配正确,否则表明“左括弧”有余。

java编程语言:

Java 编程语言的风格十分接近C、C++语言。

Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。

在 Java SE 15 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 142 发布后,Java 的执行速度有了大幅提升。

以上就是关于我想在java代码中匹配字符串,用正则表达式,代码应该怎么写全部的内容,包括:我想在java代码中匹配字符串,用正则表达式,代码应该怎么写、java正则表达式匹配、Java正则问题,为什么在网站上测试可以进行匹配,而split函数中却没用了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9878200.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存