2014-12-19 124 views
0
assert 'c' ==~ (?i:[^c].*) 

Groovy的控制檯輸出:Groovy的編譯錯誤:意外標記

groovy> assert 'c' ==~ (?i:[^c-d].*); 
         ^

1編譯錯誤: 意外的標記:?在行:1,列:17

爲什麼我在這裏得到未檢測到的標記?

+1

我添加了一個「^」,突出柱17你可以查,我已經把它放到正確的地方就?如果有'cut'n'paste錯誤.. – 2014-12-19 01:24:46

回答

2

您需要在paren之前進行轉義......並且在不區分大小寫的修飾符後您不需要冒號。 (?我)很好。然而,知道你的斷言永遠是'假的',因爲不區分大小寫c將永遠不會匹配否定範圍[^ c-d]。

assert 'c' ==~ /(?i)([^c-d].*)/ 
+1

是不是一個斜槓的報價,而不是一個逃生? – 2014-12-19 02:32:52

+0

不知道...可能...我的時髦有點...如果。 – 2014-12-19 02:49:29

+0

謝謝埃迪B工作。有趣的是,我有這樣的工作之前,斷言'c'==〜(?i [^ c]。*) – Reggae141 2014-12-19 06:30:42

0

假設你正在試圖建立正則表達式是「以任何字符開始不在範圍C到d(不區分大小寫)的任何字符串」,那麼你的「:」應爲「)(」 :

(?i)([^c-d].*) 

(?i)是「不區分大小寫」比賽標誌

+0

我在想知道OP是否知道這個RE是'falsey'......'C'不匹配(?i)[^ cd] – 2014-12-19 03:23:23

+0

做一個斷言這會失敗 – Reggae141 2014-12-19 17:03:08

+0

我知道,但這是你想要的。這個問題沒有必要通過。 – 2014-12-19 18:37:37