2013-07-04 3 views
2

Моего Regex является (?:[^\S\n]|[^[:cntrl:]])*RegEx игнорировать квадратные скобки

Если я пробую и матч Benjamin Edward Ben он совпадает всю строку, то есть «Бенджамин Эдвард Бен».

Если я попытаюсь сопоставить текст с квадратными скобками, то есть: «Benjamin Edw [ard] Ben», это соответствует первой квадратной скобке, то есть «Benjamin Edw».

Если я попытаюсь сопоставить текст с любым другим текстом, то есть «Benjamin Edw * ard^Ben», он соответствует всей строке, то есть «Benjamin Edw * ard^Ben».

Как изменить мое регулярное выражение так, чтобы оно соответствовало всей строке, даже если оно имеет квадратные скобки?

Заранее спасибо.

+1

какой символ вы хотите разрешено подберите – Anirudha

+0

Просьба уточнить. У меня возникли проблемы с пониманием того, что ваш вопрос является ezactly. будет простой '([\ w \ s \ [\]] +)' работать? – tr33hous

+0

@Anirudh - Я хочу совместить всю строку - я хочу, чтобы это регулярное выражение (?: [^ \ S \ n] | [^ [: cntrl:]]) *, чтобы вернуть Бенджамина Эдва [ard] Ben .... atm it возвращает только Benjamin Edw – ozczecho

ответ

2

Проблема с [:cntrl:] ..Change это \p{Cc}

[:cntrl:] формат класс не поддерживается в .net

\p{Cc} соответствуют бы управляющие символы, похожие на [:cntrl:]

Ваш regex будет

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

который похож на

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

ПРИМЕЧАНИЕ

[^\S\n] означает соответствие символов пробела, кроме newlines.So с выше регулярных выражений вы также сопрягать пространства

+0

Спасибо @Anirudh, а также tr33hous - извините, мой вопрос был не очень ясен. Я благодарю вас, ребята, задерживающиеся ... – ozczecho

0

Попробуйте использовать \\ перед квадратной скобкой в ​​вашем regex.

1

Чтобы соответствовать только строке, я бы посоветовал упростить до ([\w\s\[\]]+). Дальнейшие разъяснения будут оценены

Смежные вопросы