如何解决用于模式替换的 Java 正则表达式 - 特殊字符和大小写更改为空格
我正在为我们的一个用例试用 Elasticsearch 的 pattern char filter。它使用 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": " "
}
解决方法
你不只是设置一些 char_filters 吗?
问题 PatternReplaceCharFilter 上的链接显示了一个示例 -
"type": "pattern_replace","pattern": "(\\d+)-(?=\\d)","replacement": "$1_"
字符串格式为java源字符串格式(必须双引号\
)。要替换 _
或 -
或 #
,请设置正则表达式 "[_-#]+"
,并替换为 " "
。举个例子说明它重复适用。
或使用 MappingCharFilter - 尽管它会将 stack--overflow
转换为 stack overflow
(即与破折号相同的空格)。
骆驼案例场景可能类似于文档中的示例 -
"pattern": "\b([A-Z])","replacement": " $1"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。