正则表达式查找由空格分隔的单词

时间:2016-06-17 21:39:13

标签: java regex

我正在制定审查程序,以匹配一系列被删除的单词或表达。我还想找到一个单词,其中该单词中的每个字母都用空格分隔。例如,如果我要搜索something,则应该匹配s o m eth i n g

我试过简单地从我正在搜索的字符串中删除空格,这在很大程度上是有效的,但在某些情况下,它将两个单独的单词合并为一个,这恰好被审查,因此它将错误地匹配。

我能做些什么来克服这个问题?

3 个答案:

答案 0 :(得分:1)

<强> ^s\s?o\s?m\s?e\s?t\s?h\s?i\s?n\s?g\s?$

问号表示字符可能存在,但如果不存在,则正则表达式仍将匹配

编辑:用* - 星号替换问号以允许匹配多个空格。 感谢Wiktor的评论。

答案 1 :(得分:1)

以下是评论中的建议:在查询符号之间使用\s*

.replaceAll("(?<=.)(?!$)", "\\\\s*")

请参阅regex demo

这会将\s*添加到搜索字词中。整个Java demo看起来像

String search = "something";
String rx = search.replaceAll("(?<=.)(?!$)", "\\\\s*");
Pattern pat = Pattern.compile(rx);
Matcher matcher = pat.matcher("s o m eth i n g");
if (matcher.find()) {
    System.out.println(matcher.group(0));
}

如果标点符号为空格,请使用"\\\\W*"代替"\\\\s*"

答案 2 :(得分:0)

也可以做一个大表达,虽然这不会有非常好的表现,但如果不要求正则表达式,这将是一个基本的方法。

我做了一个例子:http:// ideone.com/DdiKKJ