「java实现nfa」java实现简易计算器完整代码

博主:adminadmin 2022-11-28 19:33:09 92

本篇文章给大家谈谈java实现nfa,以及java实现简易计算器完整代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

请问JAVA中正则表达式匹配怎么实现的!

Java中正则表达式匹配的语法规则:

以下是整理出来的Java下运用正则表达式实现匹配的程序案例,代码如下:

package org.luosijin.test;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

 * 正则表达式

 * @version V5.0

 * @author Admin

 * @date   2015-7-25

 */

public class Regex {

    /**

     * @param args

     * @author Admin

     * @date 2015-7-25

     */

    public static void main(String[] args) {

        Pattern pattern = Pattern.compile("b*g");

        Matcher matcher = pattern.matcher("bbg");

        System.out.println(matcher.matches());

        System.out.println(pattern.matches("b*g","bbg"));

        //验证邮政编码

        System.out.println(pattern.matches("[0-9]{6}", "200038"));

        System.out.println(pattern.matches("//d{6}", "200038"));

        //验证电话号码

        System.out.println(pattern.matches("[0-9]{3,4}//-?[0-9]+", "02178989799"));

        getDate("Nov 10,2009");

        charReplace();

        //验证身份证:判断一个字符串是不是身份证号码,即是否是15或18位数字。

        System.out.println(pattern.matches("^//d{15}|//d{18}$", "123456789009876"));

        getString("D:/dir1/test.txt");

        getChinese("welcome to china,江西奉新,welcome,你!");

        validateEmail("luosijin123@163.com");

    }

    /**

     * 日期提取:提取出月份来

     * @param str

     * @author Admin

     * @date 2015-7-25

     */

    public static void getDate(String str){

        String regEx="([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}";

        Pattern pattern = Pattern.compile(regEx);

        Matcher matcher = pattern.matcher(str);

        if(!matcher.find()){

            System.out.println("日期格式错误!");

            return;

        }

        System.out.println(matcher.group(1));    //分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)。

    }

    /**

     * 字符替换:本实例为将一个字符串中所有包含一个或多个连续的“a”的地方都替换成“A”。

     * 

     * @author Admin

     * @date 2015-7-25

     */

    public static void charReplace(){

        String regex = "a+";

        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher("okaaaa LetmeAseeaaa aa booa");

        String s = matcher.replaceAll("A");

        System.out.println(s);

    }

    /**

     * 字符串提取

     * @param str

     * @author Admin

     * @date 2015-7-25

     */

    public static void getString(String str){

        String regex = ".+/(.+)$";

        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(str);

        if(!matcher.find()){

            System.out.println("文件路径格式不正确!");

            return;

        }

        System.out.println(matcher.group(1));

    }

    /**

     * 中文提取

     * @param str

     * @author Admin

     * @date 2015-7-25

     */

    public static void getChinese(String str){

        String regex = "[//u4E00-//u9FFF]+";//[//u4E00-//u9FFF]为汉字 

        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(str);

        StringBuffer sb = new StringBuffer();

        while(matcher.find()){

            sb.append(matcher.group());

        }

        System.out.println(sb);

    }

    /**

     * 验证Email

     * @param email

     * @author Admin

     * @date 2015-7-25

     */

    public static void validateEmail(String email){

        String regex = "[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+";

        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(email);

        if(matcher.matches()){

            System.out.println("这是合法的Email");

        }else{

            System.out.println("这是非法的Email");

        }

    }

}

java字符串转运算符

楼主想要的,不就是js里的eval么……非要弄得这么复杂。

首先下载:

在你类里写:

String s="32";// 这里你可以自己拼一下字符串

Interpreter bs=new Interpreter();

try {

System.out.println(bs.eval(s));

} catch (EvalError e) {

e.printStackTrace();

}

这样就可以,字符串可以为更复杂的运算,不单单是逻辑运算

Java中的正则采用的是NFA还是DFA阿

正则只能查找匹配数据,计算统计需要其他语言配合,再则你这个正则抓的是hostpasswdversion等字串吧

构造正规式r1|r2(或运算)的NFA的程序实现

个人感觉画出NFA最直观易懂了。前一个正规式仅有一个状态(开始和接受状态同),后一个虽然是三个状态,但是其中一个是绕着a闭包的状态,一个是绕着b闭包的状态,而这两个状态又是绕着第三状态(既是开始状态又是接受状态)进行闭包,所以实际上可合并为一种状态,即是说这两个正规式对应于同一个NFA,所以相等是显然成立的。

关于java实现nfa和java实现简易计算器完整代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。