1

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

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

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

当然这不适用于

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

也试过:

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

但这只会引发嵌套限定符某些异常。由于我不是正则表达式的极客,因此我将不胜感激。

4

2 回答 2

0

如果我对您的理解正确,您可以尝试以下操作:

customer.{0,2}id

这将搜索一个customer以 0-2 个字符开头的字符串,然后是id.

所以基本上你的例子来自customer.{0,n}id哪里: 。nindexofcustomer{n}id

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

于 2013-03-13T12:07:26.413 回答
0

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

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

  1. {x,y}其中 x 是要匹配的最小数量,y 是要匹配的最大数量。您也可以只输入一位{4}与 4 次匹配的数字。

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

  3. *表示零个或多个,与{0,}

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

我认为你需要类似的东西

customer.{0,2}id

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

所以这个正则表达式将匹配如下字符串:

customerid
客户 id
客户 id
客户#+id
customerXXid

您可以将 替换.为更定义的字符类,例如,如果您只想允许空格和连字符,请创建您自己的字符类并添加您想要允许的字符。

customer[ -]{0,2}id

此正则表达式将匹配以下字符串:

customerid
客户 id
客户-id
客户
- id 客户--id

更多的信息:

于 2013-03-13T12:09:42.740 回答