elasticsearch,regexp-replace,Java,Regex,elasticsearch,Regexp Replace" /> elasticsearch,regexp-replace,Java,Regex,elasticsearch,Regexp Replace" />

用于模式替换的Java正则表达式-将特殊字符和大小写更改为空格

用于模式替换的Java正则表达式-将特殊字符和大小写更改为空格,java,regex,elasticsearch,regexp-replace,Java,Regex,elasticsearch,Regexp Replace,我正在为我们的一个用例试用Elasticsearch。它使用java正则表达式 我想用空格替换任何大小写更改或任何特殊字符。文档中有一些很好的例子。然而,我正在寻找一个字符过滤器,做更换工作 我一直在不同的博客上绞尽脑汁,但没有运气:)在这方面的任何帮助都是非常感谢的 用空格替换任何大小写更改或任何特殊字符 示例: Input: StackOverFlowIsAwesome Output: Stack Over Flow Is Awesome Input: stack_over_flow_is

我正在为我们的一个用例试用Elasticsearch。它使用java正则表达式

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

我一直在不同的博客上绞尽脑汁,但没有运气:)在这方面的任何帮助都是非常感谢的

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

示例:

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": " "
            }
“字符过滤器”:{
“案例字符过滤器”:{
“类型”:“模式替换”,

“模式”:“(?难道你不设置一些字符过滤器吗?”

这个问题的链接显示了一个例子-

          "type": "pattern_replace",
          "pattern": "(\\d+)-(?=\\d)",
          "replacement": "$1_"
字符串格式是java源字符串格式(必须双引号
\
)。若要替换
\
-
\
,请设置regex
“[\-\\]+”
,并将替换为
。给出了一个示例,表明它可以重复应用

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

驼峰案例场景可能与文档中的示例类似-

          "pattern": "\b([A-Z])",
          "replacement": " $1"

不清楚您的问题是什么-您是在尝试替换elasticsearch?还是替换它的算法?或者只是编写一个java正则表达式?或者您正在努力编写与特定情况匹配的正则表达式?可能也会发布您期望的输入和输出。@MrR感谢您指出这一点。我已经添加了一些示例。其中一些示例非常简单直接向前和一般..例如,用空格
字符串替换
-
。replaceAll(“-”,”);
。第一个是什么意思-用驼峰大小写拆分?最后一个不仅仅是拆分,你想让每件事都小写吗?更正了最后一个。不寻找java函数:)需要正则表达式来解决这些问题。就像ES在其过滤器中需要正则表达式一样。啊,我知道你需要ES配置来执行其中一个示例(或所有这些示例)?查看
X|Y或者X或者Y
来合并这两种情况。我使用的是相同的ES ReplaceCharFilter。
X|Y
是我需要的,现在正在工作。我正在使用
(?)?