【问题标题】:Regex pattern that will match similar or same strings in subject将匹配主题中相似或相同字符串的正则表达式模式
【发布时间】:2017-02-18 23:12:30
【问题描述】:

我什至不知道如何正确设置这个问题的标题。所以我一直在尝试做点什么,但我失败了。我认为最好在下面展示一些我想要完成的示例。

// Let's say I have a list of some tags/slugs.

$subjects = [
   'this-is-one',
   'might-be-two',
   'yessir',
   'indeednodash',
   'but-it-might'
];

$patterns = [
    'this-is-one', // should match $subjects[0]
    'mightbetwoorthree', // should match $subject[1]
    'yes-sir', // should match $subject[2]
    'indeednodash', // should match $subject[3]
    'but-it-might-be-long-as-well' // should match $subject[4]
];

所以,正如人们所看到的...某些模式与给定的主题不完全/完全匹配...所以这就是我的问题。我想做一个正则表达式,它可以匹配所有可能的变化。

我在 foreach 循环中尝试了一些基本的东西,但是由于它没有完全匹配,所以它无法正常工作......

if (preg_match("/\b$pattern\b/", $subject)) { // ... }

请提供任何建议、解释和代码示例...我正试图围绕正则表达式进行思考,但进展不顺利。

我也会标记 JS,因为不必对 phppreg_match 做任何事情。

【问题讨论】:

  • 应该是正则表达式???使用其他东西可能很简单!
  • 您的主题变体并没有太大的不同,所以我会在比较之前从主题中删除任何非字母字符,然后进行简单的子字符串匹配。对于更复杂的事情,除了使用机器学习之外,我不知道如何做到这一点。
  • @ibrahimmahrir - 不一定,但我的假设是这样的事情可能需要它?
  • 照@MirkoVukušić 说的做:使用replace(/[^a-z]/g, ''); 删除所有非字母字符,然后使用includesindexOf 来检查它是否是子字符串!

标签: javascript php regex


【解决方案1】:

function getMatchesOf(pattern, subjects) {
  var result = [];
  pattern = pattern.replace(/[^a-z]/g, '');
  subjects.forEach(function(subject) {
    var _subject = subject.replace(/[^a-z]/g, '');
    if(pattern.includes(_subject))
      result.push(subject);
  });
  
  return result;
}


var subjects = [
   'this-is-one',
   'might-be-two',
   'yessir',
   'indeednodash',
   'but-it-might'
];

var patterns = [
    'this-is-one',
    'mightbe',
    'yes-sir',
    'indeednodash',
    'but-it-might-be-long-as-well'
];

console.log(patterns[0] + " matches: ", getMatchesOf(patterns[0], subjects));

console.log(patterns[4] + " matches: ", getMatchesOf(patterns[4], subjects));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2013-11-25
    • 2021-05-10
    • 1970-01-01
    • 2015-05-14
    • 2015-03-15
    • 1970-01-01
    相关资源
    最近更新 更多