如何在Java中执行不区分大小写的正则表达式?

如何在Java中执行不区分大小写的正则表达式?,java,regex,Java,Regex,我有一个私有方法,用于使用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.U

我有一个私有方法,用于使用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;
}
private boolean containsExactDrugName(String testString,String drugName){
int begin=-1;
int end=-1;
Matcher m=Pattern.compile(“\\b(?“+drugName+”)\\b|\\S+”,Pattern.CASE|u不敏感| Pattern.UNICODE|u CASE).Matcher(testString);
ArrayList结果=新建ArrayList();
while(m.find()){
结果:添加(m.组());
}
布尔值find=results.contains(drugName);
发现退货;
}
它应该使用药物名称,并在文本字符串中找到精确匹配项。这意味着,如果药物名称为
胰岛素
,字符串文本为
患者服用胰岛素治疗糖尿病
,则该药物将失效。它需要与患者服用胰岛素治疗糖尿病的情况完全匹配

但是,我还需要不区分大小写的匹配,如果文本为
患者服用胰岛素治疗糖尿病
患者服用胰岛素治疗糖尿病
,则该方法也应返回
true

我将
模式。不区分大小写
放在代码中,但是它不起作用。如何正确书写?

@Chaklader

Pattern.CASE_不区分大小写是我已知的方法。它应该会起作用。 仅适用于ASCII不区分大小写的匹配

Pattern p = Pattern.compile("YOUR_REGEX GOES HERE", Pattern.CASE_INSENSITIVE);
或用于Unicode大小写折叠匹配

Pattern p = Pattern.compile("YOUR_REGEX GOES HERE", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);

我不明白您为什么需要
\S+
。看,结果是预期的吗?
|\\S+
看起来很可疑。它表示“或匹配任何非空格字符序列”。如果
insulineee
在文本中,则返回类型需要为
false
请检查在何处执行整个单词的检查,如果在字符串中,则用空格分隔。或者如果只需要true或false,请参阅检查是否使用非ASCII字符。这与我使用的字符相同,但仍然不起作用。在做了更多的测试之后,我会报告。在一个示例程序上测试给定的方法并检查结果。如果确定,则在实际程序中查找问题。