.net如何使用占位符查找子字符串

时间:2013-03-13 11:53:29

标签: .net regex vb.net string search

我有一个字符串列表,我想检查每个字符串是否包含某个子字符串。

问题是:应该允许占位符。

例如为: 我正在寻找 "customer-id", "customer id", "customers id" - >我的搜索字符串如下所示:"customer{2}id"(而{2}代表占位符字符的数量 - >介于0和2之间。)

当然这不适用于

teststring.indexof("customer{2}id")

也试过:

Dim r as new Regex("customer??id")

但这只会抛出一个嵌套的限定符,这是异常的东西。 因为我不是正则表达式的极客,所以我将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你可以试试:

customer.{0,2}id

这将搜索以customer开头,后跟0-2个字符后跟id的字符串。

基本上customer.{0,n}id n来自indexof示例:customer{n}id

请注意.匹配任何字符(在某些情况下包括新行)。

答案 1 :(得分:0)

?是正则表达式中的量词(而不是单个字符的占位符)。这意味着它量化了前面的元素。这可以是角色,角色类或团体。

正则表达式中存在4个量词。

  1. {x,y}其中x是要匹配的最小金额,y是要匹配的最大金额。您也可以只放置一个数字{4},它恰好与4次匹配。

  2. +表示一个或多个,与{1,}相同

  3. *表示零或更多,与{0,}相同

  4. ?表示零或一,与{0,1}相同

  5. 我认为你需要像

    这样的东西
    customer.{0,2}id
    

    .是正则表达式中的特殊字符,可以匹配任何字符(换行符除外)

    所以这个正则表达式会匹配像:

    这样的字符串
      

    的CustomerID
      客户编号   客户ID
      客户#+ ID
      customerXXid

    您可以使用更明确的字符类替换.,例如如果您只想允许空格和连字符,请创建自己的角色类并添加您想要允许的字符。

    customer[ -]{0,2}id
    

    这个正则表达式会匹配如下字符串:

      

    的CustomerID
      客户编号   客户-id
      customer-id
      customer-id

    更多信息: