2013-03-13 48 views
1

我有一个字符串列表,我想检查每个字符串是否包含某个子字符串。.net如何找到占位符的子字符串

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

例如为: 我在寻找 "customer-id", "customer id", "customers id" - >我的搜索字符串看起来是这样的:"customer{2}id"(而{2}表示的占位符字符数 - >介于0和2)。

当然,这不会与

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

也试过工作:

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

但这只是抛出一个嵌套预选赛一些东西例外。 因为我不是正则表达式中的怪胎,我会很感激任何帮助。

回答

0

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

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

  1. {x,y}其中x是匹配的最小量,y是匹配的最大量。您也可以只输入一个数字{4},它们恰好匹配4次。

  2. +意指一个或多个,相同{1,}

  3. *意味着零个或多个,相同{0,}

  4. ?指0或1,是相同的{0,1}

我觉得你需要像

customer.{0,2}id 

.是在正则表达式特殊字符和任何字符匹配(除换行符)

所以这个正则表达式会匹配字符串一样:

客户ID
客户ID
客户ID
客户#编号
customerXXid

您可以用更多定义的字符类替换.,例如如果你只想要一个空格和一个连字符,创建你自己的角色类并添加你想要允许的角色。

customer[ -]{0,2}id 

此正则表达式将匹配字符串一样:

客户ID
客户ID
客户-id
客户ID
客户ID

更多信息:

0

如果我理解正确的话,你可以尝试这样的:

customer.{0,2}id 

这将搜索开始customer其次是0-2个字符,然后id的字符串。

因此基本上customer.{0,n}id其中n来自您的indexof示例:customer{n}id

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

相关问题