java - 从Java中的字符串中提取特定但未知的值

标签 java mysql string substring

我正在尝试从 Java 中的 MySQL 插入命令中提取值。就 Java 而言,插入命令只是一个字符串。其格式为

INSERT INTO employees VALUES ("John Doe", "45", "engineer");

我需要从该语句中删除“45”。我无法确定其索引,因为姓名和职位会有所不同。我只需要年龄。除了我可能会及时弄清楚的过于复杂的字符串操作之外,是否有更直接的方法来隔离这些字符?我似乎无法全神贯注于如何做到这一点,而且我对正则表达式也不是很熟悉。

最佳答案

如果这是您的消息的特定格式,那么像这样的正则表达式应该会有所帮助:

INSERT INTO employees VALUES (".*?", "(.*?)", ".*?");

读取第一组结果,您应该得到年龄。

在正则表达式中(X)定义了一个捕获X的匹配组(其中X可以是任何正则表达式)。这意味着如果整个正则表达式匹配,那么您可以轻松找到该匹配组中的值(在 Java 中使用 Matcher.group())。

您还可以在单​​个正则表达式中拥有多个匹配组,如下所示:

INSERT INTO employees VALUES ("(.*?)", "(.*?)", "(.*?)");

所以你的代码可能如下所示:

String sql = "INSERT INTO employees VALUES (\"John Doe\", \"45\", \"engineer\");";
final Pattern patter = Pattern.compile("INSERT INTO employees VALUES (\"(.*?)\", \"(.*?)\", \"(.*?)\");");
final Matcher matcher = pattern.matcher(sql);
if (matcher.matches()) {
  String name = matcher.group(1);
  String age = matcher.group(2);
  String job = matcher.group(3);
  // do stuff ...
}

关于java - 从Java中的字符串中提取特定但未知的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5591548/

相关文章:

java - 将一个字符串添加到另一个字符串,转换为 double 或 char,然后计算结果

jquery - 当盒子充满 jquery .post() 时从 mysql 获取行

php - MYSQL & PHP 如何显示一个表中有多少个结果

c# - c# 中的字符串相等运算符 ==

c# - 用空字符串初始化字符串数组的最短方法是什么?

Java 接口(interface)\抽象类限制

java - Scala Spark MLLib NoClassDefFoundError

java - 使用java处理应用内苹果收据

MySQL View - 来自多个表的计算列返回 NULL

C# 将文本框中的字符复制到字节数组