gpt4 book ai didi

java - 标记输入的最佳方法

转载 作者:行者123 更新时间:2023-12-01 12:42:40 25 4
gpt4 key购买 nike

我正在尝试使用如下内容来标记程序的输入:

create table users schema {firstName: string, lastName: string, age:number, address: string}
insert on users values {firstName: foo, lastName: bar, age:1, address: 32 foobar street}

我希望 token 如下所示:

Token 1: insert
Token 2: on
Token 3: users
Token 4: values
Token 5: {firstName: foo, lastName: bar, age:1, address: 32 foobar street}

这是我尝试使用的类似 SQL 的语法。正则表达式是最好的方法还是还有其他方法?

最佳答案

我认为处理这个特定问题的最佳方法是在循环中使用正则表达式。

Pattern pat = Pattern.compile("\\{.*?\\}|[^ \\{]+");
Matcher m = pat.matcher(source);
while (m.find()) {
String token = m.group(0);
// add to an ArrayList or whatever
}

该模式查找:

  • 左花括号,后跟任何内容,然后是右花括号。 (必须在大括号之前插入反斜杠,否则它们具有特殊含义。.*? 表示匹配零个或多个字符,? 表示匹配尽可能少的字符如果输入中有多个 }

  • 任何非空白或 { 的字符序列。

循环将依次找到每个这样的标记; m.group(0) 返回匹配的字符串。

使用一个正则表达式很难返回可变数量的标记。使用 split 通常是将字符串拆分为可变数量的标记的好方法,但这种情况有点太复杂,无法找出正确的分隔符。 (我确信这是可行的,但会使您的代码更难理解。)

我已经在您提供的两个输入示例上对此进行了测试,我认为它提供了您想要的结果。

关于java - 标记输入的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com