2014-10-24 2 views
0

Я использую .NET для экспериментов с регулярными выражениями.Regex соответствует строке до двух последовательных пробелов

Я изо всех сил пытаюсь создать регулярное выражение для захвата сегмента в строке, которая заканчивается двумя пробелами. Например

This is a test Start of next bit 

Как я могу захватить первую часть указанных выше строк This is a test, зная, что два отрезка разделены двумя пробелов (\s в регулярных выражениях мира)?

Я пробовал такие вещи, как:

This is a test[^\s{2}] 

но никогда нигде не получаю меня.

ответ

0

Я нашел решение по этому вопросу SO:

Regex to Exclude Double spaces

This((?!\s{2}).)*

будет соответствовать тому, что мне нужно.

Сумасшедший материал этого регулярного выражения malarky.

+0

найти, почему ваше регулярное выражение не удается здесь http://regex101.com/r/qW8wQ6/2 –

1

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

This.*?(?=\s{2}) 

Это соответствует любому символу .*?, пока он не встречает первую двойную \s (кстати, \s точно не означает «пространство» , это означает любые пробелы, включая символы новой строки, возврат каретки, формы, вкладки).

Или вы могли бы попробовать что-то немного другое; сопрягать все, пока они являются одиночными «пространства»:

This(?:\s\S+)* 

Опять же, это проще разделить на двойном пространстве.

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