我需要能夠檢查與|在他們中。例如,像d*|*t
這樣的表達式應該爲「dtest | test」之類的字符串返回true。正則表達式加上「|」
我不是正則表達式的英雄,所以我只是嘗試了幾件事情,如:
Regex Pattern = new Regex("s*\|*d"); //unable to build because of single backslash
Regex Pattern = new Regex("s*|*d"); //argument exception error
Regex Pattern = new Regex(@"s*\|*d"); //returns true when I use "dtest" as input, so incorrect
Regex Pattern = new Regex(@"s*|*d"); //argument exception error
Regex Pattern = new Regex("s*\\|*d"); //returns true when I use "dtest" as input, so incorrect
Regex Pattern = new Regex("s*" + "\\|" + "*d"); //returns true when I use "dtest" as input, so incorrect
Regex Pattern = new Regex(@"s*\\|*d"); //argument exception error
我有點跳出選項,我應該再使用? 我的意思是我知道這是一個非常基本的正則表達式,但由於某種原因我沒有得到它。
使用非貪婪通配符而不是負面字符類(例如'。*?d'而不是'[^ d] * d')可能會更容易理解。 – eyelidlessness 2010-05-18 06:11:35
@eye:非貪婪匹配會導致回溯緩慢,並且RegEx的某些風格(例如ERE)不支持非貪婪模式。 – kennytm 2010-05-18 06:53:16
我發現第一點與直覺相反,因爲這兩種模式在實踐中應該是相同的,但我查了一下,看起來你是對的(對於大多數引擎,有些優化);第二點看起來並不相關,因爲提問者正在使用哪個引擎(雖然我可以理解爲未來的搜索者提供更通用的答案)。 – eyelidlessness 2010-05-18 08:09:47