2013-03-21 92 views
-2

字符串的集合可以像這樣。正則表達式與序列匹配

1)anyNoOfcharacters < anycharacter> anyNoOfcharacters。 anyNoOfcharacters

2)anyNoOfcharacters < anychar> anyNoOfcharacters和 '#'(作爲最後的字符串)

3)anyNoOfcharacters 「_」 anyNoOfcharacters和一個 「#」

4)anyNoOfcharacters和anyNoOfdigits隨後一個「#」

有沒有可以驗證上述所有字符串的單個REgex?根據我的要求

這是我迄今所做的......

Regex pattern = new Regex(@"^[a-zA-Z0-9\_]+[a-zA-Z0-9#.-] | [\b\w\d] | "); 

任何人都可以請加條件,上面的圖案。

在此先感謝..!

+1

你說的意思是 「驗證」?你只是要求一個匹配所有這些字符串的正則表達式嗎?如果是這樣,我認爲答案根本不是。 – 2013-03-21 04:39:20

+0

您的要求非常模糊。你想要一個正則表達式來尋找你列出的5個確切的字符串,或者這些只是一個更大的集合的例子?如果是後者,字符串的哪些部分會有所不同? – 2013-03-21 04:42:04

+0

@BrianRogers這組字符串位於文檔的行之間。是的正則表達式僅適用於我列出的五個字符串。 – 2013-03-21 04:54:14

回答

1

根據您的要求,這裏是一個正則表達式,應該與您列出的五個確切字符串中的任何一個匹配。如果這不是你的意思,那麼請澄清。

Regex pattern = new Regex(@"(ads<r>_aimDate50ms\.Good)|(ads<t>Valid#)|(tactics_priorityT)|(tactics_SelectedADS#)|(ads3bValid#)"); 

編輯

你的要求仍然十分手工波浪。我們試着定義一些特定的規則。我想,也許我們想:

  • 一個或多個字母,其次是
  • 零個或多個字母或數字或下劃線,其次是
  • 零個或一個#字符

- OR -

  • 一個或多個字母,其次是
  • 零個或多個字母或數字或下劃線,其次是
  • 只有一個<性格,其次是
  • 只有一個字母,其次是
  • 只有一個>性格,其次是
  • 一個或多個字母或數字或下劃線或.字符,其次是
  • 零個或一個#字符

這是在球場?這些規則將與你的例子相匹配,但它們仍然可能不是「正確的」。當我說你需要具體時,這就是我的意思。如果你能清楚地描述這個模式是什麼,那麼你可以爲它編寫一個正則表達式。如果你無法辨別出一組規則來描述這個模式,那麼就沒有辦法將它變成一個正則表達式。

您是否可以更新您的問題以列出模式的特定規則?對於我們需要知道的模式的每個部分:您期望什麼樣的字符或字符,以及它們中可以連續出現多少個字符或字符。例如,零個或多個,一個或多個,只有一個,等

EDIT 2

基於更新後的問題,我想我可以拍攝。當你說「anyNoOfCharacters」時,你沒有說明什麼是字符。但是,如果你的字面意思是包括空格,標點符號等字符,那麼正則表達式不會很有用,因爲它可以匹配所有的東西。所以我會假設你的意思只是在這種情況下的字母。

這裏是你的規則翻譯成正則表達式(與我有關 「anyNoOfCharacters」 假設沿着):

  1. [A-Za-z]*<.>[A-Za-z]*\.[A-Za-z]*
  2. [A-Za-z]*<.>[A-Za-z]*#
  3. [A-Za-z]*_[A-Za-z]*#
  4. [A-Za-z0-9]*#

爲了得到這個成一個單一的正則表達式,你可以合作通過在每個規則周圍放置括號()並在它們之間添加|來使術語更爲寬泛。因此,我們有:

Regex pattern = new Regex(@"([A-Za-z]*<.>[A-Za-z]*\.[A-Za-z]*)|([A-Za-z]*<.>[A-Za-z]*#)|([A-Za-z]*_[A-Za-z]*#)|([A-Za-z0-9]*#)"); 

我猜這是接近,但仍可能不完全在那裏。你有足夠的地方可以採取這種做法並根據需要進行改進嗎?如果沒有,請澄清更多。

+0

準確地說,這不是我的意思。這些只是我給出的例子,我想要的模式的REgex ... – 2013-03-21 05:08:20

+0

因此,然後你需要描述你想匹配的模式。從你提供的例子中不可能知道模式是什麼。 – 2013-03-21 05:15:28

+0

該模式包括..「以字母開頭,接下來可以有數字」它應該匹配「 _/w」。也應該驗證「 _./w」後跟一個#。如上例所示 – 2013-03-21 05:20:04

0

這是你想要的

Regex pattern = new Regex(@"[^\s]+"); 

根據您的評論試試這個

Regex pattern = new Regex(@"(?:[^\s]*[_#\.][^\s]*)[^\s]+"); 
+0

Sry這不是我想要的.. !!我想從其他字符串集合上面的字符串,並移動到另一個文件..! – 2013-03-21 05:16:21

+0

如果你有所有的字符串,爲什麼你使用reg然後呢? – Civa 2013-03-21 05:18:20

+0

字符串就是這種形式。像「_」「。」的組合。和「#」和一些字符串可能不包含這些我想分開這些類型的字符串從正常的話.. – 2013-03-21 05:22:50