私はRegExを使用して薬物名を見つけるために私が使用するプライベートメソッドを持っています。コードは次のとおりです。JavaでRegExを大文字と小文字を区別しない方法は?
private boolean containsExactDrugName(String testString, String drugName) {
int begin = -1;
int end = -1;
Matcher m = Pattern.compile("\\b(?:" + drugName + ")\\b|\\S+", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE).matcher(testString);
ArrayList<String> results = new ArrayList<>();
while (m.find()) {
results.add(m.group());
}
boolean found = results.contains(drugName);
return found;
}
これは、ドラッグネームを取る必要があり、テキスト文字列内で正確に一致するものを見つける必要があります。つまり、薬剤名がinsuline
で、文字列のテキストがThe patient is taking insulineee for the treatment of diabetes
の場合、それは中断されます。 The patient is taking insuline for the treatment of diabetes
の完全一致が必要です。
ただし、大文字と小文字を区別しない一致が必要です。テキストがThe patient is taking Insuline for the treatment of diabetes
またはThe patient is taking INSULINE for the treatment of diabetes
の場合は、true
も返されます。
Pattern.CASE_INSENSITIVE
をコードの中に入れましたが、機能しません。それを正しく書くには?
Pattern.CASE_INSENSITIVE @Chaklader
をマッチングするためのマッチングのために、私は理解していない 。 [ここ](https://ideone.com/9kZJNu)を見て、結果は期待されていますか? –
'| \\ S +'は非常に疑わしく見えます。それは、 "またはスペースのない文字のシーケンスと一致する"と言います。 – khelwood
'insulineee'がテキストの中にある場合、戻り値の型は' false'である必要があります – Chaklader