【问题标题】:Tool to get from one pattern to another?从一种模式到另一种模式的工具?
【发布时间】:2012-11-09 19:29:40
【问题描述】:

有没有一种工具,如果你给它一组已经转换成另一种模式的字符串,它可以告诉你如何得到每个模式。例如,我有字符串:

20G-34-41-01-00004.G-0020.01 已转换为20G344101 4G 2001

我想知道如何从一个到另一个,反之亦然。有更多的模式,所以我想知道是否有一个工具。

【问题讨论】:

  • 通常的方法是使用正则表达式regex。但你知道他们对此怎么说吗?一开始你有问题,然后你使用正则表达式,现在你有两个问题。
  • 有多少种模式?这些模式是否有模式?
  • 是的,模式中存在模式。
  • “得到一个模式”或“你可以达到每个模式”的方式有很多细微差别——如果你使用正则表达式,你可以使用“.*”作为你的模式它会工作得很好。使用良好的差异算法可能会获得合理的模式,但我想不出现成的 API 可以帮助您。

标签: c# .net-4.0 pattern-matching


【解决方案1】:

如果您只使用字符串,在我看来创建一个 .ConvertTo(pattern) 扩展方法是可行的方法。

public enum ConversionTypesEnum
{
    LongDate,
    ShortDate,
    FatDate,
    SkinnyDate
}

public static string ConvertTo(this string stringtoConvert, ConversionTypesEnum type)
{
    ...
}

【讨论】:

  • 我的问题是实际转换。
【解决方案2】:

听起来你在问机器学习。 mathoverflow.com有简短的讨论。

在机器学习中,这是一种常见情况(给定函数的这些有限多例,“学习”函数的其余无限多例)。您应该查看机器学习文献,因为这就是您正在做的事情。例如,您可能会问,匹配给定测试用例的最简单的正则表达式是什么?

... Henning Fernau,Algorithms for Learning Regular Expressions(扩展摘要)。

【讨论】:

  • 这里的问题是ApplyPattern 是我想要找到的。
  • 对不起,@Xaisoft,我误解了你的问题。我以为你有一组有限的转换,你正试图选择已应用的转换。这个问题要困难得多,如果不以某种方式限制可能的模式,理论上可能是不可能的。我已经替换了我的答案。
猜你喜欢
  • 2020-08-12
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 2010-10-06
相关资源
最近更新 更多