当前位置: 首页 > 知识库问答 >
问题:

模式替换Java正则表达式-特殊字符和大小写更改为空白

梁韬
2023-03-14

我正在为我们的一个用例试用ElasticSearch的模式字符过滤器。它使用Java正则表达式。

我想用空格替换任何大小写更改或任何特殊字符。文件中有一些很好的例子。然而,我正在寻找一个char过滤器,做替换工作。

我已经打破了我的头在不同的博客,但没有运气:)任何帮助在这方面是非常感谢的。

用空格替换任何大小写更改或任何特殊字符

示例:

Input: StackOverFlowIsAwesome
Output: Stack Over Flow Is Awesome

Input: stack_over_flow_is_awesome
Output: stack over flow is awesome

Input: stack-over-flow-is-awesome
Output: stack over flow is awesome

Input: stack#over#flow#is#awesome
Output: stack over flow is awesome

..... any special char based inputs

**this one is good, if it is possible**
Input: STACKOverFlowIsAwesome
Output: STACK Over Flow Is Awesome

我正在使用以下2个字符筛选器:

          "char_filter": {
            "case_char_filter": {
              "type": "pattern_replace",
              "pattern": "(?<=\\p{Lower})(?=\\p{Upper})",
              "replacement": " "
            },
            "special_char_filter": {
              "type": "pattern_replace",
              "pattern": "[^a-zA-Z0-9]",
              "replacement": " "
            }

共有1个答案

仇迪
2023-03-14

你就不能设置一些char_filters吗?

问题PatternReplaceCharFilter上的链接显示了一个示例-

          "type": "pattern_replace",
          "pattern": "(\\d+)-(?=\\d)",
          "replacement": "$1_"

字符串格式是Java源字符串格式(必须用双引号\)。若要替换_-#,请设置正则表达式“[_-#]+”,替换为“”。给出了一个例子,说明它重复应用。

或者使用MappingCharFilter--尽管它会将stack-overflow转换为stack overflow(即与破折号相同的空格)。

camel案例场景可能类似于文档中的示例-

          "pattern": "\b([A-Z])",
          "replacement": " $1"
 类似资料:
  • 问题内容: 我想编写一个简单的正则表达式来检查给定字符串中是否存在任何特殊字符。我的正则表达式可以工作,但是我不知道为什么它还包括所有数字,所以当我输入一些数字时会返回错误。 我的代码: 问题答案: 请不要那样做…… 像这样的小Unicode BABY ANGEL 快要死了!◕◡◕(←这些不是图像)(箭头也不是!) 而且您正在杀死20年的DOS:-)(最后一个笑脸称为WHITE SMILING F

  • 我试图为密码字段创建一个验证,它只允许字符和 时有什么区别,以及哪些字符来自

  • 问题内容: 我很难提出一个正则表达式,该正则表达式实际上会将某些特殊字符列入黑名单。 我需要使用它来验证输入字段中的数据(在Java Web应用程序中)。我们希望允许用户输入任何数字,字母(我们需要包括带重音的字符,例如法语或德语)和一些特殊字符,例如’-。等等 如何将诸如<>%$等的字符列入黑名单? 问题答案: 我只是将角色列入白名单。 使用正则表达式构建黑名单同样简单,但是你可能需要添加更多字

  • 我正在学习正则表达式并尝试处理一个小任务。 我将输入量作为字符串,并将其转换为美元格式。 输入字符串如下所示 输出字符串看起来像这样 使用正则表达式,我试图避免使用below正则表达式在输入量中出现前导零和逗号。例如,如果输入类似 我正在用 除了前导零之外,我无法替换可能存在的任何其他字符。例如,如果输入中已经存在“$”,则转换时会出现错误。我不知道该怎么办。

  • 问题内容: 所以我有一个像 2000cc车辆翻新发动机 我想把它变成 2000CC车辆翻新发动机 资本CC于2000CC。我显然不能这样做,因为它将所有出现的cc都替换为大写版本,因此加速器一词将成为加速器。在我的情况下,前四位将始终是四位,后跟字母cc,因此我认为可以使用正则表达式来完成。 我的问题是,在Java中,当cc跟随4位数字时如何将cc转换为CC并获得我期望的结果? 问题答案: 如果只

  • 我有一个我无法解决的问题 我有一个段落,其中包含一些关键字,需要用存储在数组中的新值替换 示例: 段落:“我最喜欢的水果是[0],但我也喜欢[1]和[3]。” 数组:水果=[“香蕉”、“橘子”、“苹果”、“葡萄”] 我的期望是: 你能帮我找到解决这个问题的办法吗? 我试图把我的句子转换成这样的数组: 之后,我将替换为,我得到了这个: 我倾向于将上面数组中的,和替换为,,的值,然后将该数组转换为完整