我想找到的話正則表達式字基於例如搜索字符串 (這意味着空格前後):如何查找包含在Java
String s = "sdaaf fd hgfaaf ghjfada dgffaasdf";
,我想找到的所有詞包含字符串"aa"
答案是的話:
"sdaaf" , "hgfaaf" , "dgffaasdf"
我想找到的話正則表達式字基於例如搜索字符串 (這意味着空格前後):如何查找包含在Java
String s = "sdaaf fd hgfaaf ghjfada dgffaasdf";
,我想找到的所有詞包含字符串"aa"
答案是的話:
"sdaaf" , "hgfaaf" , "dgffaasdf"
你不通過正則表達式解決這個問題,因爲有一個更直接的方式去了解它。
String phrase = "aa";
String s = "sdaaf fd hgfaaf ghjfada dgffaasdf";
String[] words = s.split(" ");
List<String> wordList = new ArrayList<String>();
for(String word : words)
{
if(word.contains(phrase))
{
wordList.add(word);
}
]
按照以下步驟依次把所有的單詞,"aa"
: -
分割空間的字符串 - 使用String#split
方法用於這一目的。這會給你一個String數組,所有的元素都由空格分隔。然後遍歷你的String數組。
對於每個元素,檢查它是否包含您的序列"aa"
- 爲此使用String#contains
方法。
ArrayList
,您必須事先創建它們。這是採用符合你的每一個字的正則表達式的完整解決方案:
final String input = "asdf ljh poiu ddaa aad aa", strToMatch = "aa";
final Matcher m = Pattern.compile(
String.format("\\w*?%s\\w*", Pattern.quote(strToMatch))).matcher(input);
while (m.find()) System.out.println(m.group());
String regex = "(\\w+aaa\\w+)+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("helaaalo woraaald how are you toaaaday");
while (matcher.find()) {
System.out.print(matcher.group() + " ");
}
的輸出繼電器是:helaaalo woraaald toaaaday
你可以改變模式適合您的需求。
\\ b沒有必要。 – Woot4Moo
@ Woot4Moo你說得對,模式'(\\ w + aaa \\ w +)+'也適用。 –
這個問題不適合正則表達式。 – Woot4Moo
@ Woot4Moo是什麼讓你認爲這是因爲解決問題有一種更直接的方式。 – Anirudha
@ Fake.It.Til.U.Make.It。正則表達式有它的位置,但有更直接和簡單的解決方案。我理解在某些場景中使用正則表達式的願望,但這不值得。 – Woot4Moo