我正在尝试从给定的字符串中获取一个“预览”,并将其作为值放入HashMap中。所谓的“预览”是指以单词边界结尾的子字符串(最大长度为50个字符)。
以下是一个代码示例,展示了我如何尝试实现这一功能:
我预期它会打印出来:
但是它印出的是:
如果我单独测试这个正则表达式,它会按预期工作 - 它会找到一个最大长度为50个字符且以单词边界结束的值的子字符串。但是如果我调试它,m.find总是返回false。
有什么解决办法吗?(我专注于获取摘要,而不是使用Matcher.find() ;-) )
以下是一个代码示例,展示了我如何尝试实现这一功能:
import java.util.regex.*;
public class Test {
public static void main(String[] args) throws Exception {
final Pattern pattern = Pattern.compile("(^.{0,50}\b)");
final Matcher m = pattern.matcher(
"This is a long string that I want to find a shorter teaser for.");
if (m.find()) {
System.out.println("Found: " + m.group(1));
} else {
System.out.println("No match");
}
}
}
我预期它会打印出来:
Found: This is a long string that I want to find a
但是它印出的是:
No match
如果我单独测试这个正则表达式,它会按预期工作 - 它会找到一个最大长度为50个字符且以单词边界结束的值的子字符串。但是如果我调试它,m.find总是返回false。
有什么解决办法吗?(我专注于获取摘要,而不是使用Matcher.find() ;-) )
Pattern.compile("(^.{0,50}\\b)")
这段代码是用于编译一个正则表达式,其中:^
表示匹配行的开头.{0,50}
表示匹配长度为 0 到 50 个字符的任意字符(除了换行符)\\b
表示匹配单词边界