【问题标题】:Generate Strings from regex从正则表达式生成字符串
【发布时间】:2021-10-04 23:43:53
【问题描述】:

我正在使用正则表达式来获取字符串的某些部分。假设我正在捕获 3 组。我将这 3 个组存储在数据库中。现在我想从这些组中重新创建原始字符串。有没有办法做到这一点?

例如原始字符串

longPrefix-202007_3847c820e158484dbc6ff486fc08cf6a.someSuffix

正则表达式

^(longPrefix-)(\d+)(_)([a-fA-F0-9]+)(.someSuffix)

之后会有3组,

group1: longPrefix-
group2: 202007
group3: _
group4: 3847c820e158484dbc6ff486fc08cf6a
group5: .someSuffix

我只存储 group2 和 group4,因为那只是改变部分。

问题是只能使用group2、group4和regex生成原始字符串吗?

【问题讨论】:

  • 连接值,有什么问题?
  • 如果longPrefix-_.someSuffix是常量,为什么不简单地重用常量呢?你有什么特别的理由来解析正则表达式吗?
  • somesuffix 仅作为示例,它们也可能是可变的。 contact the value 的问题是有人必须保持附加和正则表达式逻辑同步。
  • 如果RegExp的模式总是一样的,我建议你写一个RegExp来解析你的RegExp。 :)

标签: java regex regex-group


【解决方案1】:

我不知道有任何正则表达式 java API 可以让您以这种方式访问​​它。

换句话说,理论上你可以编写软件来确定,只要匹配的正则表达式加上第 2 组和第 4 组的内容,输入一定是 - 在这里输入 - 但这是一件很奇怪的事情,并且我所知道的任何基于 Java 的正则表达式实现都没有为您提供编写此类东西所需的 API 调用。

因此,要么深入研究并花几周时间自己编写它,要么只针对这种特定情况编写它:将正则表达式本身与一个简单的方法匹配,该方法接收两个字符串并仅发出 return "longPrefix-" + in1 + "_" + in2 + ".someSuffix";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多