gpt4 book ai didi

java - 在正则表达式方面需要帮助

转载 作者:行者123 更新时间:2023-11-30 09:29:09 25 4
gpt4 key购买 nike

我有像 "Varchar(10), Number(10), datetime(8), varchar(17 ), char(3) 一次一个。

我只需要从中提取文本。我如何用 Java 实现?

假设我输入了 Varchar(50) 并期望输出 Varchar

我试过了,但是没用:

String line = "varchar(0)";
String pattern = "\\D{.*}";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
} else {
System.out.println("NO MATCH");
}

最佳答案

你的组正则表达式一般

\w+\(\d+\)

要捕获第一部分,您可以将其分组

(\w+)\(\d+\)

试试这个函数:

private final Pattern TYPE_REGEX = Pattern.compile("(\\w+)\\(\\d+\\)");

public String extractType(String item) {
Matcher matcher = TYPE_REGEX.matcher(item.trim());
if(!matcher.matches())
return null;
return matcher.group(1);
}

免费赠品:

你也可以使用类型安全的枚举作为你的返回类型,因为我认为你正在处理一组固定的数据库类型

private enum Type { VARCHAR, NUMBER, DATETIME, CHAR, ADD_ALL_OTHERS_THAT_APPLY }
private final Pattern TYPE_REGEX = Pattern.compile("(\\w+)\\(\\d+\\)");

public Type extractType(String item) {
Matcher matcher = TYPE_REGEX.matcher(item.trim());
if(!matcher.matches())
return null;
return Type.valueOf(matcher.group(1).toUpperCase());
}

关于java - 在正则表达式方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13725769/

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