2012-06-05 28 views
0

好吧我在RegEx上肯定很糟糕,因爲我很少需要它,但是我發現自己處於一種簡單的解析就是不切割它的情況。因此,在試圖在工作中坐在這裏教授我自己的整個RegEx時,我終於放棄並問專家。我只是簡單地解析一個sql文件並將其分解到GO聲明中。問題是我不能拉GO換掉其他詞,比如CREATE TABLE GOPHER。所以我覺得我很安全,說我分裂時,我有一條線,這是隻有空格,字GO不區分大小寫。簡單的RegEx表達式

以下是我的,我認爲它非常接近,但我做錯了,因爲它現在不匹配任何東西。

^+\s*[GO]\s*\Z 

*注情況下,可以照顧與忽略大小寫的標誌,所以我不擔心這一點

如果我只是寫

^+[GO]+\Z 

它主要工作,但它不會忽略GO前後的空格,我認爲\s*會這樣做,但它似乎沒有返回任何匹配。任何人都可以爲我解決這個問題,並簡短地解釋我在這裏會發生什麼?

+0

'[GO]'裝置** 'G' ** **或 'O' **。如果你想讓整個字符串簡單寫'GO'或者(GO)' – davioooh

+0

啊我看到了,所以我的空間邏輯是正確的,我只是在愚蠢地認爲是在第二行和第一行之間打破它。 –

回答

3

使用Regex.Split與模式@"(?<=\bGO\b)",它匹配完整單詞「GO」後的零寬度邊界。

參見

+0

相比其他答案,使用它有什麼優勢嗎? @「^ + \ s *(GO)\ s * \ Z」,因爲這似乎對我有用,我必須做更多的工作才能完全理解您的答案。 –

+0

「其他答案」會匹配「年前」,並且不匹配「GO;」。與任何語言一樣,使用正則表達式,您應該描述您的實際含義:「在單詞」GO「之後分割」。此外,SQL可以用分號而不是換行符分隔,所以使用單詞邊界錨點比換行錨點更好。 –

+0

不是^表示新行然後空格?那麼多年前不是換行符那麼空格,那裏還有其他字母?但我想你是對的,謝謝您的幫助。 –