我对regex和Java还是很陌生,我正在尝试制作一个AI来执行子手。
我有很多单词的列表,当用户猜到一个字母时,我会构建一个字符串来显示它。当用户猜出字母时,我想优化列表以仅包含在我猜对的位置具有字母的单词。
因此,我们假设单词是“猫”。当用户猜测为“ a”时,我以字符串“ ...”开头,我将该字符串更新为“ .a”。
如何使用正则表达式删除不遵循此模式的数组中的所有字符串?我可以为此使用正则表达式吗?非常感谢您的帮助。
答案 0 :(得分:0)
要从数组中“删除”所有不匹配的字符串,可以使用正则表达式.a.+
或.+[aA].+
来测试数组中所有与正则表达式匹配的单词,并建立一个new / replacement数组,仅包含与正则表达式匹配的单词。
.a.+
将匹配三个字母或更长的所有单词,其中a
位于第二位置.[aA].+
将匹配三个或三个以上字母的所有单词,其中第二个位置为a
或A
。a
(或A
)与非单词字符串匹配-但如果您知道将要测试的单词池(数组中的单词) )不包含任何非单词字符,因此,与正确覆盖所有非单词边缘情况相比,在“任何字符”点运算符上进行简单匹配要容易得多这些是一些不错的正则表达式学习资源:
我发现单元测试是使用各种正则表达式模式字符串和输入字符串进行“实验”的好地方,以微调您想要的实际应用程序行为。