💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Pattern Tokenizer **Pattern Tokenizer **使用正则表达式分割文本。遇到单词分隔符将文本分割为词元, 或者将捕获到匹配的文本作为词元。 默认的匹配模式时   \W+ ,遇到非单词的字符时分割文本。 谨防病态的正则表达式 **Pattern Tokenizer **使用 [Java 正则表达式](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html) 。 一个书写不当的正则表达式会导致运行缓慢,甚至抛出StackOverflowError 导致运行中的节点突然退出。 查看更多关于[ 病态的正则表达式 和 如何避免。](http://www.regular-expressions.info/catastrophic.html) ## **输出示例** | `POST _analyze` `{` `"tokenizer"``: ``"pattern"``,` `"text"``: ``"The foo_bar_size's default is 5."` `}` | 上面的句子会生成如下的词元: | `[ The, foo_bar_size, s, default, is, 5 ]` | ## **配置** **Pattern Tokenizer **有以下参数: | `pattern` | [Java 正则表达式](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html) 。默认是 `\W+ 。` | | `flags` | Java正则表达式 [flags](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#field.summary). flag之间用管道分隔, 如`"CASE_INSENSITIVE|COMMENTS"。` | | `group` | 将哪个捕获分组作为词元。默认是 -1。 | ## **配置示例** 下面的例子中,我们配置 **Pattern Tokenizer **遇到逗号时分隔文本。 | `PUT my_index` `{` `"settings"``: {` `"analysis"``: {` `"analyzer"``: {` `"my_analyzer"``: {` `"tokenizer"``: ``"my_tokenizer"` `}` `},` `"tokenizer"``: {` `"my_tokenizer"``: {` `"type"``: ``"pattern"``,` `"pattern"``: ``","` `}` `}` `}` `}` `}` `POST my_index``/_analyze` `{` `"analyzer"``: ``"my_analyzer"``,` `"text"``: ``"comma,separated,values"` `}` | 输出为: | `[ comma, separated, values ]` | 在下一个例子中,我们配置 **Pattern Tokenizer **遇到双引号( 忽视转义的引号 \" ) 时捕获分组。正则表达式如下: | `"((?:\\"``|[^``"]|\\"``)*)"` | 解释: * 起始的引号 " * 开始捕获 * 一个 \"  或者其他 非" 的字符 * 重复直到无法匹配更多的字符 * 结束的引号 在写入到 JSON 中,** "** 和 **\** 需要转义,因此表达式最终为: | `\"((?:\\\\\"|[^\"]|\\\\\")+)\"` | | `PUT my_index` `{` `"settings"``: {` `"analysis"``: {` `"analyzer"``: {` `"my_analyzer"``: {` `"tokenizer"``: ``"my_tokenizer"` `}` `},` `"tokenizer"``: {` `"my_tokenizer"``: {` `"type"``: ``"pattern"``,` `"pattern"``: ``"\"((?:\\\\\"|[^\"]|\\\\\")+)\""``,` `"group"``: 1` `}` `}` `}` `}` `}` `POST my_index``/_analyze` `{` `"analyzer"``: ``"my_analyzer"``,` `"text"``: ``"\"value\", \"value with embedded \\\" quote\""` `}` | 输出为: | `[ value, value with embedded \" quote ]` |