如何在java中搜索所有可能组合的字符串?

时间:2016-01-01 07:03:09

标签: java regex string search string-matching

如何像Android studio一样使用Java中给定键的所有可能组合来实现字符串匹配。enter image description here呢?任何正则表达式都可用。

2 个答案:

答案 0 :(得分:1)

你不需要正则表达式,因为greedy algorithm会这样做。

您可以将字符串与O(n + p)中的模式匹配,其中n是字符串的长度,p是模式的长度,遵循一个非常简单的策略:对于模式的每个字符,查找从当前索引开始的字符串中的匹配字符。如果找到匹配项,请将索引前进,然后从模式中查找下一个字符。如果模式在字符串结束之前耗尽,则表示匹配;否则,你没有匹配。

public static boolean match(String s, String p) {
    String us = s.toUpperCase();
    int i = 0;
    for (char c : p.toUpperCase().toCharArray()) {
        int next = us.indexOf(c, i);
        if (next < 0) {
            return false;
        }
        i = next+1;
    }
    return true;
}

Demo.

答案 1 :(得分:0)

您可以使用java.util.regex.Matcher

所以例如......

String key = "asdf"; // the String or regex you are looking to find
String data = "asdfskdljfd"; // the String you are searching through

Pattern pattern = Pattern.compile(key);

Matcher m = pattern.matcher(data);
while (m.find()) {
    String s = m.group(1);
    // s = "asdf"
}