gpt4 book ai didi

java - 我如何使用正则表达式来实现包含功能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:17 25 4
gpt4 key购买 nike

P.S : 如果你对我下面的描述有任何不明白的地方,请问我

我有一个包含单词列表的字典。我有一个包含多个字符的单词字符串。

例如:字典=>

String[] = {"Manager","age","range", "east".....} // list of words in dictionary

现在我有一个字符串 tageranm

我必须在字典中找到所有可以用这个字符串组成的单词。我已经能够使用 Create all string using Permuation 找到解决方案,并验证该字符串是否存在于字典中。

但我有另一种解决方案,但我不知道如何使用 Regex

在 Java 中实现它

算法:


// 1. Sort `tageranm`. 

char c[] = "tageranm".toCharArray();

Arrays.sort(c);

letters = String.valueOf(c); // letters = "aaegmnrt"

2.Sort all words in dictionary:

Example: "range" => "aegnr" // After sorting

现在如果我将使用 "aaegmnrt".contains("aegnr") 将返回 false。因为 '' 介于两者之间。

有没有办法使用 Regex 并忽略字符 m 并使用上述方法获取字典中的所有单词?

提前致谢。

最佳答案

这是一个可能的解决方案,使用 @MattTimmermans in the comments 规定的正则表达式类型.虽然它不是很快,所以可能有很多方法可以改进它。我也很确定应该有用于这种搜索的库,它们(希望)会使用降低性能的算法。

java.util.List<String> test(String[] words, String input){
java.util.List<String> result = new java.util.ArrayList<>();

// Sort the characters in the input-String:
byte[] inputArray = input.getBytes();
java.util.Arrays.sort(inputArray);
String sortedInput = new String(inputArray);

for(String word : words){
// Sort the characters of the word:
byte[] wordArray = word.getBytes();
java.util.Arrays.sort(wordArray);
String sortedWord = new String(wordArray);

// Create a regex to match from this word:
String wordRegex = ".*" + sortedWord.replaceAll(".", "$0.*");
// If the input matches this regex:
if(sortedInput.matches(wordRegex))
// Add the word to the result-List:
result.add(word);
}

return result;
}

Try it online (with added DEBUG-lines to see what's happening).

对于您的输入 {"Manager","age","range", "east"}"tageranm" 它将返回 ["age ", "范围"]

编辑:不匹配 Manager 因为 M 是大写的。如果你想要不区分大小写的匹配,最简单的方法是在检查之前将输入和单词都转换为相同的大小写:

  • input.getBytes() 变为 input.toLowerCase().getBytes()
  • word.getBytes() 变为 word.toLowerCase().getBytes()

Try it online (现在生成 ["Manager", "age", "range"])。

关于java - 我如何使用正则表达式来实现包含功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50967602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com