如何使用Regex过滤单词?

时间:2016-12-03 13:45:21

标签: java regex

我的代码有点问题。我想用文本过滤掉所有带有元音和5个字母的单词并将它们放入字符串数组中。

数组的长度必须是文本中匹配的总数,并且字符串数组应该被叠印。不可否认它不起作用。任何提示或改进?

<button onclick="loadData();">Load page</button>

1 个答案:

答案 0 :(得分:1)

我建议首先使用外部工具让你的正则表达式正确,例如this one(注意&#39;解释&#39;选项)。你的正则表达式现在说的是//后跟[aeiou]和其他4个字母和一个空格中的任何一个。这样就可以匹配//abcde<space>而不是//abcde(缺少空格)而不是//bacde<space>(元音不是第一个字母),可能不是你想要的。如果你想要总共5个字母和至少一个元音,你将需要所谓的lookbehind。所以,一个例子就是这样的:

\w{5}(?<=[aeiou])\b

(我还建议使用单词边界\b来破坏单词,而不是空格。)

在外部工具中使用正则表达式之后,您可以开始在代码中解决问题,我建议为不同的输入编写预期结果的测试用例作为第一步,然后比较结果您的程序生成测试用例(通过断言/记录/调试等)。