当前位置: 首页 > 面试题库 >

Java正则表达式不区分大小写不起作用

杨鸿畅
2023-03-14
问题内容

我正在尝试使用以下程序使用正则表达式删除字符串中的某些单词。它可以正确删除,但只考虑大小写。如何使其不区分大小写。我坚持(?1)使用replaceAll方法,但是没有用。

package com.test.java;

public class RemoveWords {

    public static void main(String args[])
    {

        // assign some words to string

        String sample ="what Is the latest news today in Europe? is there any thing special or everything is common.";

            System.out.print(sample.replaceAll("( is | the |in | any )(?i)"," "));
    }
}

输出:

what Is latest news today  Europe? there thing special or everything common.

问题答案:

您需要将模式中要区分大小写的部分放在(?i) 前面

System.out.print(sample.replaceAll("(?i)\\b(?:is|the|in|any)\\b"," "));
                                    ^^^^

看见

我已将要删除的关键字周围的空格替换为单词边界(\\b)。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。

如果仅当关键字被 空格 包围时才想删除它们,则可以使用正向前行和后向:

(?i)(?<= )(is|the|in|any)(?= )

看见



 类似资料:
  • 问题内容: 我想使用JavaScript从我的URL中提取查询字符串,并且想要对查询字符串名称进行不区分大小写的比较。这是我在做什么: 但是上面的代码进行区分大小写的搜索。我尝试过,但没有帮助。知道如何实现吗? 问题答案: 您可以添加“ i”修饰词,表示“忽略大小写”

  • 我需要查找以三个小写字母开头的文件,但由于某种原因,我遇到了不希望的不区分大小写的行为。我正在使用带有 -regex 选项的查找,但它甚至可以找到以大写字母开头的文件。 打印内容与以下内容相同: 如果我不使用一系列字符,而是使用一个字符,则工作方式与敏感字符相同,只打印小写文件。 我尝试过使用不同的正则表达式类型,结果是相同的。 此外,白鹭似乎也起作用: 为什么在使用字符范围时“find-rege

  • 问题内容: 我无法弄清楚为什么我的搜索区分大小写。我读过的所有内容都说ES默认情况下不敏感。我有一些映射,它们指定用于索引和搜索的标准分析器,但似乎有些东西还是区分大小写的,即通配符: 这失败了,但是“ rae *”可以按需工作。我需要使用通配符来进行“开始于”类型的搜索(我想)。 我正在从.Net应用程序中使用NEST,并在创建索引时指定分析器,因此: 在这种情况下,它使用的是简单分析仪,但标准

  • 问题内容: 在Python中,我可以使用以下命令将正则表达式编译为不区分大小写: 有没有办法做同样的事情,但是不用。在文档中找不到Perl的后缀(例如)。 问题答案: 传递到的PARAM ,或:

  • 问题内容: 我有一个正则表达式: 这应该与该字符串匹配并返回三个捕获(根据Rubular) 这是我的代码: 当有三个时,此打印输出1(组),所以我只能这样做,只会返回32。 问题答案: 调用查找匹配的 下一个 实例,如果没有更多实例,则返回false。尝试调用它三次,看看是否有所有预期的组。 为了澄清,正在尝试 在正则表达式中 找到第一个组 表达式 。您的正则表达式中只有一个这样的组表达式,因此永

  • 问题内容: 现在,当然,我可以编写正则表达式来处理这两种情况,例如,但是我的正则表达式是由用户提供的字符串构造的: 名字在哪里。可能类似于“西北偏北”。现在,对我来说,最明显的解决方案是遍历每个字符,并为每个字母写“ [nN]”: 但是我觉得这是一个不太优雅的解决方案。速度并不是真正的问题,但是我需要知道是否还有另一种方法。 问题答案: 您可以将不区分大小写的标志设置为正则表达式中的第一项。 您可