Java 查找仅包含给定字符的单词:RegEx
我有一套单词。比如说,Java 查找仅包含给定字符的单词:RegEx,java,regex,Java,Regex,我有一套单词。比如说, abc, adb, acb, cab, abcc, abk, bacc 我想找到那些只有我自己的词 abc 所以,我需要的结果是 abc, acb, cab, abcc, bacc 我需要用正则表达式找到这个。 谁能帮帮我吗。举个简单的例子,不用担心这个案子 [a-c]+ 将匹配来自a-c的一个或多个字母的任意组合 [afz]+ 对a,f,z也一样 以及考虑案例,你还想考虑什么构成一个“单词”(之前和成功的空白或其他什么)?< /P> 或 [和]表示一个字符,而+表示
abc, adb, acb, cab, abcc, abk, bacc
我想找到那些只有我自己的词
abc
所以,我需要的结果是
abc, acb, cab, abcc, bacc
我需要用正则表达式找到这个。
谁能帮帮我吗。举个简单的例子,不用担心这个案子 [a-c]+ 将匹配来自a-c的一个或多个字母的任意组合 [afz]+ 对a,f,z也一样
以及考虑案例,你还想考虑什么构成一个“单词”(之前和成功的空白或其他什么)?< /P> 或
[
和]
表示一个字符,而+
表示集合中任何字符的一个或多个<代码>\b为,因此您将只匹配完整单词
下面的正则表达式将找到所有单词,其中只包含abc字符
Pattern regex = Pattern.compile("\\b[abc]+\\b");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// matched text: regexMatcher.group()
// match start: regexMatcher.start()
// match end: regexMatcher.end()
}
单词
a
是否构成匹配?嘿,只是一个想法:在请求帮助之前,也许你应该这样做?Java regexps支持\b
匹配单词边界。(其中“word”的意思是“whatever\w
匹配”,推测。)这将匹配abcbla blacbla等。这也将匹配“fooabc”或“whatever”@failedev是的,我正在编辑过程中,忘记了。抱歉打扰您,但是除了使用正则表达式之外,还有其他方法查找此类字符串吗?任何可以用于此的算法。如果您的输入是一个列表,您可以使用拆分方法将它们放入一个单词数组中,然后根据您想要/不想要的一组字符检查数组的每个元素。这是一个很好的方法,但我有一些大的性能问题。我发现了Boyer Moore字符串搜索算法和一些算法,但我无法将它们用于此问题。甚至有一个C语言的实现。为什么你不能使用它们呢?
\\b[a-c]+\\b
Pattern regex = Pattern.compile("\\b[abc]+\\b");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// matched text: regexMatcher.group()
// match start: regexMatcher.start()
// match end: regexMatcher.end()
}