【问题标题】:Match two strings based on patterns根据模式匹配两个字符串
【发布时间】:2017-02-05 19:16:30
【问题描述】:

假设我有以下数据

string data1 = "2014SP";
string data2 = "2014DP";
string data3 = "2014AP-S1"

在比较字符串时,我有没有办法判断它们遵循的是 NumberWordSpecialCharacter 等模式。所以在这种情况下,data1 和 data2 具有相同的模式,而 data3 是不同的。

如果我定义了模式,我可以使用 Regex 来完成,但我没有。我有一个需要比较的数据列表,同时增加未定义的模式,因此可能一个比较集是 213S-P12 和 2014S,第二个是 S-P2015 和 SP123。

【问题讨论】:

  • 第一步是明确指定“模式”对您的案例意味着什么。比比较每个字符串的模式应该是微不足道的。
  • 如果你希望得到任何有用的答案,你需要提供一堆正面和负面的例子。
  • 这个问题是重复的。有一种已知的模式,在这种情况下,已经有数百个关于堆栈溢出的正则表达式问题。或者,如果没有已知的模式,那么“比较字符串相似度”问题将是相关的

标签: c# .net regex c#-4.0


【解决方案1】:

我脑海中浮现的第一个想法是,您可以通过将输入字符串转换为输出整数来尝试一个简单的模式模型。 如:如果是字母(或字母块),用1代替;数,用 2 代替;等。简单高效。我不确定这是否有帮助:)

【讨论】:

  • 您显然会使用字符串作为结果,而不是整数 - 但实际上这是一种标准方法的想法:规范化值,然后通过相应的规范化值对原件进行分组。 IE。 "2014AP-S1" 将映射到 "ddddaasad"(d - 数字,a - alpha,s - 特殊)。
猜你喜欢
  • 2022-07-20
  • 1970-01-01
  • 2021-04-17
  • 2017-10-25
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 2014-12-11
相关资源
最近更新 更多