2013-03-13 74 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

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