我正在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