多行字符串搜索

时间:2015-06-08 20:47:32

标签: java regex

假设用户提供了搜索查询输入:

word1 word2 word3

正在搜索的文字如下:

Some text some text some text word1 \r\n (newline here)
word2      word3 some text some text some text.

有没有办法将用户的输入转换为正则表达式,并且基本上得到搜索查询开始和结束位置的索引,同时忽略换行符和多个空格?

2 个答案:

答案 0 :(得分:2)

你可以这样做:

public static String regex = "//s+" +"((" + word1 + ")|(" + word2 + ")|(" + word3 + "))//s+"

public static void printMatches(String text, String regex) {
  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(text);
  // Check all occurrences
  while (matcher.find()) {
    System.out.print("Start index: " + matcher.start());
    System.out.print(" End index: " + matcher.end());
    System.out.println(" Found: " + matcher.group());
  }
}

答案 1 :(得分:0)

使用DOTALL标记来匹配跨越多行的文字。