2013-02-20 2 views
3

Мне нужно регулярное выражение, чтобы не соответствовать строкам, начинающимся и/или заканчивающимся пробелами, но совпадающими между пробелами. Я не эксперт по регулярному выражению.regex для соответствия строке, не начинающейся и/или заканчивающейся пробелами, но допускающей промежуточные пробелы

При необходимости я могу использовать 2 регулярных выражения.

Примечание: Использование . для показа места в примерах.

матч ложен для

.text. 
..text 
text.. 
..te.xt.. 

матча верно для

text 
te..xt 

Я придумал это. Это соответствует только начальным пространствам.

^(?!\s+).*$ 

ответ

2

Этот шаблон должен сделать трюк:

^\S+.*?\S+$ 

И использование:

Regex.IsMatch(input, @"^\S+.*?\S+$")) 
+0

Я использовал ваше оригинальное регулярное выражение. но он сводится к тому, что изначально упоминалось в @ scott-wegner и о том, что у вас есть сейчас. – hIpPy

+0

@hlpPy, так как для меня мой подход читабельнее и понятнее :) Может быть, я просто не знаю некоторых трюков ... –

1

Это может быть проще соответствовать тому, что вы не хотите, а затем отрицать это:

!Regex.IsMatch(input, @"(^\s)|(\s$)") 
+0

@ Shane-andradei я думал об этом. – hIpPy

4

Вы можете использовать класс \S символов с ^ и $ якорей.

^\S(.*\S)?$ 

Опциональный .*\S группировка необходима для сопоставления одного без пробела.

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