2009-11-12 63 views
3

我們可以放入一個正則表達式中,布爾邏輯:行以'a'或'b'開頭。 通過使用FileHelpers實用程序觸發問題,該實用程序對於「ExcludeIfMatchRegex」具有「記錄條件選擇器」文本框。實用程序是用C#編寫的。 ^一 - 的作品,只是不怎麼寫的^ A或^ B單個正則表達式中的布爾邏輯 - 可能嗎?

回答

6

使用|(管道)功能:

^a|^b 

或者,在擴展格式:

^a # starts with an A 
| # OR 
^b # starts with a B 
+0

Downvoter:這是怎麼回事? – 2009-11-12 00:08:33

+0

在FileHelpers中沒有適用於我 [ConditionalRecord RecordCondition.ExcludeIfMatchRegex,「^ \」|^t「)] – MicMit 2009-11-12 00:29:03

+0

空格在正則表達式中很重要。正則表達式「^ \」|^t「的意思是:」匹配字符串的開始,引號,後跟空格,或者匹配空格,然後匹配字符串的開頭,然後匹配't'。「匹配空格,然後匹配字符串的起始處將始終失敗 - 這是不可能的!:)刪除空格,它應該工作正常 – 2009-11-12 00:39:56

4

如何:^ [AB]

+0

我的理解是它應該適用於單個字符的開始,它確實如此。我還需要使用其他答案可以完成的子字符串。 – MicMit 2009-11-12 00:25:18

+0

這不是必須否定像[^ ab],因爲^字符類外部代表行的開始。 – Bruno 2013-10-23 11:29:17

3

有一個很難理解你,但是......如果你正在尋找對於比賽,如果字符串以「A」或「b」開頭,和失敗,否則,你可以這樣做:

^(a|b)(.+)$ 

然後,當你比賽的組,第一組將是要麼一個「 a「或」b「,第二組將是字符串的其餘部分。

+0

我對FileHelpers內部不感興趣,但你的變體爲我工作。 [ConditionalRecord(RecordCondition.ExcludeIfMatchRegex,「^(\」| \ t | 3 T)(。+)$「)] – MicMit 2009-11-12 00:21:19

2

的一種特殊構造(?ifthen|else)允許您創建條件的正則表達式。如果如果部分評估爲true,則正則表達式引擎將嘗試匹配當時的部分。否則,嘗試替換其他零件。該語法由一對圓括號組成。前面的括號後面必須跟着一個問號,緊隨其後的是if部分,緊接着是當時的部分。這部分可以跟一個垂直條和其他部分。您可以省略其他部分,以及與之相關的垂直條。

檢查出conditionals關於regex.info頁面的更多詳細信息。