我正在Java中读取超过100000个字符的字符串。 我有一个关键字的列表,我搜索字符串,如果字符串存在,我调用一个函数,做一些内部处理。正则表达式不提取确切模式
例如,我所拥有的关键词的种类是“脸”,我希望获得所有的模式,我有匹配“脸”而不是“脸谱”。我可以接受字符串中脸部后面的空格字符,所以如果在字符串中我有像“脸部”或“脸部”或“脸部”或“脸部”的匹配,我也可以接受。但是我不能接受“duckface”或“duckface”等
我写的正则表达式
Pattern p = Pattern.compile("\\s+"+keyword+"s\\s+|\\s+");
其中关键字是我的关键字的列表,但我没有得到预期的效果。你能阅读我的描述,并请建议什么可能是问题,以及我如何解决它?
此外,如果指向一个非常好的正则表达式的Java页面是共享的,我也会很感激。
谢谢贡献者..
编辑
我知道它不工作时我用下面的代码的原因:
Pattern p = Pattern.compile("\\s+"+keyword+"s\\s+|\\s+");
Matcher m = p.matcher(myInputDataSting);
if(m.find())
{
System.out.println("Its a Match: "+m.group());
}
这将返回一个空字符串...
它不起作用?缺少什么字符串? – 2012-02-18 16:42:17
您需要将备选选项加括号,但在您的情况下更好地执行'+'s?\\ s +“'以使's'可选。另外,请确保'+ Pattern.quote(关键字)+'您的关键字,否则它们可能会混淆您的模式。 – Irfy 2012-02-18 16:47:31
我经常使用[this](http://www.regular-expressions.info/tutorial.html)网站作为教程/参考 – Vic 2012-02-18 16:55:18