【问题标题】:Need to a 'like' comparision [closed]需要“喜欢”比较[关闭]
【发布时间】:2014-07-25 20:22:07
【问题描述】:

需要帮助来查找 C# 代码以执行类似 SQL 类型的搜索(不区分大小写) 你能帮我用正则表达式代码吗?模式和测试候选都是用户输入

* 可以在任何地方。所以模式可能是 .T*S.com

例如

Pattern = *.test.com
Test Candidate1 = abc.test.com                   Result = Pass
Test Candidate2 = abc.tESt.com                   Result = Pass
Test Candidate3 = abc.itest.com                  Result = FAIL

【问题讨论】:

  • Regex 可以处理这个问题,但在这种情况下,一个简单的不区分大小写的字符串比较也可以。
  • *.test.corp 如何匹配abc.test.com
  • 我看不出这些怎么能通过。
  • 您需要什么样的帮助?
  • @mawburn 不,他只是编辑了他的问题以修复我指出的错字。我明白他想做什么。

标签: c# regex


【解决方案1】:

如果* 在前面,您可以使用String.EndsWith()

喜欢

"abc.test.com"
    .EndsWidth(".test.com", StringComparison.InvariantCultureIgnoreCase);

返回true

【讨论】:

    【解决方案2】:

    如果你不想走正则表达式路线并且候选人总是以 .test.com 结尾,你可以去掉你模式中的*,然后检查EndsWith

    if (candidate.EndsWith(pattern, StringComparison.InvariantCultureIgnoreCase))
        // you have a match
    

    【讨论】:

      【解决方案3】:

      如果你想要正则表达式,模式需要是:

      public bool IsMatch(string s,string pattern)
      {
           return System.Text.RegularExpressions.Regex.IsMatch(s, pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
      }
      string pattern = ".*\.test\.com"
      Console.WriteLine(IsMatch("abc.test.com",pattern).ToString()); //PASS
      Console.WriteLine(IsMatch("abc.tESt.com",pattern).ToString()); //PASS
      Console.WriteLine(IsMatch("abc.itest.com",pattern).ToString()); //FAIL
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 2017-12-17
        • 2020-10-13
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多