2012-04-11 72 views
1

我正在重構this regular expression C#字符串變成一個常量,我不知道如何最好地命名它(我的正則表達式很弱)。這個正則表達式的名字是什麼?

@"^(?!\s\s)"

不問號表示東西是可選的?什麼問題是可選的?

我發現,作爲一名開發人員,在您正確命名它之前,您必須清楚地理解一些內容(還有:Naming is Hard),所以我想清楚地理解這一點,然後給它一個合適的名稱。

這個正則表達式的名稱是什麼?

我正在考慮LinesThatDoNotStartWithTwoSpacesDoesNotStartWithTwoSpaces

+5

我總是使用這個規則:不要重構你不明白的東西。 – 2012-04-11 12:15:39

+3

+1爲了給這個多注意的變量名字...很多愛人..很多愛! – Galilyou 2012-04-11 12:16:15

+0

@ 32bitkid喜歡那個。 – lance 2012-04-11 12:16:21

回答

1

我總是試圖在變量名使用Not。例如NotHuman,其含義將隨着Human的定義而改變。 此外,變量名稱應該告訴這是什麼,但不是這個能做什麼,所以我認爲在變量名中使用動詞並不是一個好主意,例如Search,Match

對於您的情況,LineWithoutIndentation如何,類似於CSS3中的屬性text-indent

0

這就是所謂的Negative lookahead

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Crippledsmurf 2012-11-15 10:38:02

+0

@Crippledsmurf:如果問題是如何編寫負面預測,我會包括代碼,但問題已經包含負向預測。問題是這個結構被叫做*。我所包含的名稱「Negative lookahead」是*答案的重要部分。鏈接只是採購索賠,我可以在沒有鏈接的情況下寫出完全相同的答案。如果鏈接的頁面發生變化,該答案不會失效。 – 2012-11-15 10:41:47

5

的結構本身是一種消極的前瞻。它指定了一個在主表達式之後不能匹配的組。

在這種情況下,當匹配的行不是以兩個空格(空白)開頭時,它會匹配。

我會說出正則表達式作爲NotMatchLineStartingWithTwoWhiteSpaces