2016-11-30 52 views
1

我有這樣的完整字符串 - 「你好,你們所有人」 和我有一個像「全部」 壞字現在我設法找到第一個字符串中的第二個很容易, 但讓我們說我的第一個字符串是「你好,你們所有人」 或「你好,我,你們」 甚至「你好,你們所有人」 有沒有正則表達式的方式來找到它? 我已經得到了迄今試圖找到字符串分隔符

String wordtocheck =pair.getKey().toString(); 
String newerstr = ""; 
for(int i=0;i<wordtocheck.length();i++) 
    newerstr+=wordtocheck.charAt(i)+"\\."; 
Pattern.compile("(?i)\\b(newerstr)(?=\\W)").matcher(currentText.toString()); 

但它不會做的伎倆 感謝所有幫助者

+1

難道還有'嗨A.L,L?你們? –

+0

是的,這是一個很好的觀點,它可以是,甚至可以是「a.l l」 – yanivtwin

回答

1

您可以動態插入\W*(=零個或多個非單詞構建模式字符,也就是,要搜索字符不屬於字母,數字或下劃線)在一個關鍵字的字符之間爲:

String s = "Hello a l l you guys"; 
String key = "all"; 
String pat = "(?i)\\b" + TextUtils.join("\\W*", key.split("")) + "\\b"; 
System.out.println("Pattern: " + pat); 
Matcher m = Pattern.compile(pat).matcher(s); 
if (m.find()) 
{ 
    System.out.println("Found: " + m.group()); 
} 

參見online demoString.join是用來代替TextUtils.join,因爲這是一個Java演示)

如果可以在搜索詞無字字符,你需要用(?<!\\S)(初始\b)和(?!\\S)(而不是尾隨\b更換\b字邊界),或完全刪除。

+1

其他不好的詞怎麼樣(全部就像一個例子),可以有多個詞,然後你可以如何管理? –

+0

@mohanrathour:那種情況有什麼問題?你試過了嗎?看看[在線演示](https://ideone.com/QYYyX2),展示'你好嗎? –

+0

我剛剛在正則表達式中添加了不區分大小寫的嵌入式標誌選項,因爲它在OP中使用。 –

0

試試這個

String str="Hello .a-l l? guys"; 
    str=str.replaceAll("\\W",""); //replaces all non-words chars with empty string. 

STR現在「Helloallguys」

+0

但是,如果需要檢查文本中找到的搜索字符串,則此方法無效。 –