我得到了2個文本的末尾:正則表達式加號的字
第一招: My favorite programming language is c++.
第二個: My favorite programming language is c.
,並希望尋求c
和c++
在這些文本分開。
對於尋找c
我可以寫:\bc\b
然後:第一個文本是壞的!第二個是好的。我也試過:\bc^\+\b
但不起作用。 對於fiding c++
我嘗試了例如:\bc\+\+\b
但後來第一個和第二個不起作用。請幫助。
編輯:
如果什麼文本將I programme in c++ a lot!
?
編輯:
這裏的單元測試,我需要完成:通過改變只爲compile()
方法的參數
package adhoc;
import java.util.HashSet;
import java.util.Set;
import org.junit.Test;
import junit.framework.TestCase;
public class FinderProgrammingTechnologyInTextTest extends TestCase{
@Test
public void testFind() {
// Given:
Set<String> setOfProgrammingLanguagesToSeek = new HashSet<>();
setOfProgrammingLanguagesToSeek.add("java");
setOfProgrammingLanguagesToSeek.add("perl");
setOfProgrammingLanguagesToSeek.add("c");
setOfProgrammingLanguagesToSeek.add("c++");
// When:
FinderProgrammingTechnologyInText finder = new FinderProgrammingTechnologyInText(
setOfProgrammingLanguagesToSeek);
Set<String> result = finder.find("java , perl! c++ and other staff");
// Then:
assertTrue(result.contains("java"));
assertTrue(result.contains("perl"));
assertFalse(result.contains("c"));
assertTrue(result.contains("c++"));
}
}
:
package adhoc;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class FinderProgrammingTechnologyInText {
Set<String> setOfTechnologiesToSearch;
public FinderProgrammingTechnologyInText(Set<String> x) {
this.setOfTechnologiesToSearch = x;
}
public Set<String> find(String text) {
Set<String> result = new HashSet<>();
return setOfTechnologiesToSearch.stream()
.filter(x -> Pattern
.compile(x) // change only this line
.matcher(text).find()
)
.collect(Collectors.toSet());
}
}
難道你不能找出句子中的最後一個單詞嗎? – wp78de
使用'(?<!\ w)c \ + \ +(?!\ w)','String p =「(?<!\\ w)c \\ + {2} 「;' –
它不適用於尋找'c' –