首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么做java正则表达式?匹配2-3个字母?

我怎么做java正则表达式?匹配2-3个字母?
EN

Stack Overflow用户
提问于 2017-11-15 03:07:24
回答 1查看 88关注 0票数 0

我有我的java项目的问题,我没有添加匹配组合,我有一个字典和混合,字典是有正常的词,在混合从字典一样;在dic。=“鼠标”mixed= "usemo“那些是同一个词,我想做的,如果我写在混合"usmo”程序去字典和4个字母是相同的在字典所以单词是鼠标,或混合= "usem“字典可以改变”鼠标“,我搜索这可以用正则表达式,但我不知道怎么做,有人能帮我吗??

EN

回答 1

Stack Overflow用户

发布于 2017-11-15 13:44:07

下面是运行代码,它将与您使用正则表达式搜索的模式进行匹配,并打印字典中的匹配结果。

代码语言:javascript
复制
   public class RegexTestStrings {

    private static HashSet<String> dictionarySet = new HashSet<String>();
    private static HashSet<String> regExSetSet = new HashSet<String>();
    public static void main(String[] args) {
        dictionarySet.add("mouse");
        dictionarySet.add("tiger");
        dictionarySet.add("monkey");
        RegexTestStrings regexTestStrings=new RegexTestStrings();
        System.out.println(regexTestStrings.fidMatchingWord(dictionarySet,"usemo"));
        System.out.println(regexTestStrings.fidMatchingWord(dictionarySet,"usem"));
        System.out.println(regexTestStrings.fidMatchingWord(dictionarySet,"usmo"));
        System.out.println(regexTestStrings.fidMatchingWord(dictionarySet,"kmoy"));
    }

    private String fidMatchingWord(HashSet<String> dictionarySet2, String searchWord) {
        String result=null;
        Iterator<String> dictionarIterator=dictionarySet.iterator();
        while(dictionarIterator.hasNext()){
            regExSetSet.clear();
            String inputString=dictionarIterator.next();
            findAllRegEx(inputString.toCharArray(), 0, inputString.length()-1);
            Iterator<String> resultIterator=regExSetSet.iterator();
            // Regular expression to match the pattern of search string
            String pattern = "(?s)^(" + Pattern.quote(searchWord) + ".*$|.*" + Pattern.quote(searchWord) + ")$";
            while(resultIterator.hasNext()){
                String str=resultIterator.next();
                Pattern p = Pattern.compile(pattern);
                Matcher m = p.matcher(str);
                boolean b = m.matches();
                if(b){
                    result=inputString;
                    break;
                }
            }
        }
        return result;
    }

    public static void findAllRegEx(char[] ary, int startIndex, int endIndex) {
        if(startIndex == endIndex){
            regExSetSet.add(String.valueOf(ary));
        }else{
            for(int i=startIndex;i<=endIndex;i++) {
                 swap(ary, startIndex, i );
                 findAllRegEx(ary, startIndex+1, endIndex);
                 swap(ary, startIndex, i );
            }
        }
    }

    public static void swap(char[] arr, int x, int y) {
        char temp = ary[x];
        arr[x] = arr[y];
        arr[y] = temp;
    }   
}
Output
______________
mouse
mouse
mouse
monkey
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47293472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档