gpt4 book ai didi

java - 正则表达式 - 选取括号内的字符串的所有实例

转载 作者:行者123 更新时间:2023-12-01 11:47:02 29 4
gpt4 key购买 nike

我目前正在开发一个项目,为算术表达式创建一个解析器。我想添加一些“高端”功能,但有一个与正则表达式相关的问题。我对正则表达式比较陌生,所以我不能 100% 确定它是适合以下情况的正确工具。

我们的目标是让我们的用户为计算字段创建一个方程字符串(由 GUI 界面辅助,因此他们不必格式化字符串原始格式),然后将其作为我们的数据表示模型的新字段有关我们以 CSV 格式存储在数据库中的信息。但是,我希望用户能够将命名字段从他们的数据模型绘制到他们的计算中。

以下例模型为例。

  1. 名称(字符串 - 原始数据 - 第 1 列)
  2. Temp_in_ Degrees(数字 - 原始数据 - 第 2 列)
  3. 速度(数字 - 原始数据列 3)

假设我们要向其中添加一个新字段,用于表示华氏温度

  1. 名称(字符串 - 原始数据 - 第 1 列)
  2. Temp_in_ Degrees(数字 - 原始数据 - 第 2 列)
  3. 速度(数字 - 原始数据列 3)
  4. Temp_in_fahrenheit(数字 - 计算得出)

我有字段 4 的方程字符串,如下所示。请注意,它指的是原始数据中字段 2 的值,作为方程的一部分,括在括号中。

(({Temp_in_degrees} * 9) / 5) + 32

这是一个非常简单的示例方程。较高复杂性的示例可能包括对现有原始数据字段的多个引用。

现在,我想使用正则表达式来查看这样的字符串,并返回该字符串中恰好出现在“{”和“}”之间的所有子字符串。在上面的第一个示例方程中,我想返回 Temp_in_ Degrees。在一个更复杂(但无意义)的例子中:

({Temp_in_degrees} / {Speed}) * 30;

我想返回温度度速度(或者,循环遍历并处理找到的每个字符串)

由于用户能够自定义他们的模型,我不能假设我们总是会有同名的字符串。

我确实有一个解决这个问题的替代想法,我使用 String.indexOf 来解决这个问题,方法是循环字符串,获取索引,获取这些索引之间的子字符串,然后将原始数据中的值替换到字符串中并重复,但我觉得 RegEx 应该能够帮助解决这个问题。

有什么想法吗?

最佳答案

如果您打算使用正则表达式,那么以下内容可能会有所帮助:

尝试以下操作:

    String input = "({Temp_in_degrees} / {Speed}) * 30;";
Pattern pattern = Pattern.compile("\\{\\S+\\}");

Scanner scanner = new Scanner(input);
String output;
while ((output = scanner.findInLine(pattern)) != null) {
System.out.println(output);
}
scanner.close();

关于java - 正则表达式 - 选取括号内的字符串的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29068979/

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