2013-07-04 211 views
2

我正則表達式是(?:[^\S\n]|[^[:cntrl:]])*正則表達式忽略方括號

如果我嘗試和匹配Benjamin Edward Ben它整個字符串,即「本傑明·愛德華奔」相匹配。

如果我嘗試將文本與方括號相匹配,即:「Benjamin Edw [ard] Ben」與第一個方括號即「Benjamin Edw」匹配。

如果我嘗試將文本與任何其他文本匹配,即「Benjamin Edw * ard^Ben」匹配整個字符串,即「Benjamin Edw * ard^Ben」。

如何更改我的正則表達式,使它匹配整個字符串,即使它有方括號?

在此先感謝。

+1

你想允許什麼字符匹配 – Anirudha

+0

請詳細說明。我無法正確理解你的問題。一個簡單的'([\ w \ s \ [\]] +)'工作嗎? – tr33hous

+0

@Anirudh - 我想匹配整個字符串 - 我想那個正則表達式(?:[^ \ S \ n] | [^ [:cntrl:]])*返回Benjamin Edw [ard] Ben .... atm it只返回Benjamin Edw – ozczecho

回答

2

問題是與[:cntrl:] ..Change它\p{Cc}

[:cntrl:]類格式不支持.NET

\p{Cc}將匹配控制類似[:cntrl:]

字符您正則表達式將是

(?:[^\S\n]|[^\p{Cc}])* 

這類似於

[^\S\n\p{Cc}]* 

注意

[^\S\n]意味着匹配空格字符,除了newlines.So以上的正則表達式,你也將匹配空間

+0

謝謝@Anirudh&也tr33hous - 抱歉我的問題不是很清楚。我很欣賞你們的堅持... – ozczecho

0

嘗試在您的regex的方括號之前使用\\

1

只匹配字符串,我會建議簡化到([\w\s\[\]]+)。進一步澄清,將不勝感激