2013-07-09 2 views
3

У меня есть тексты, подобные следующим образом (непечатаемых предназначенных), который я бегу RegEx на линии построчно:Regex возможные Пробелы и завершающие символы

Smith-Petersen     X1l 
Jonas Henry   
Foord. 82a      221. 
12345 Somewhere 

теперь я хочу использовать RegEx, чтобы захватить что-нибудь прежде чем произойдет 3 или более пробелов (что может произойти или не произойти) в первой группе совпадений. Допустимые символы:

[a-zA-Z0-9,. '\-AÖÜäöüß] 

Что я хочу: Smith-Petersen, Jonas Henry, Foord. 82a и 12345 Somewhere. После отчаяния, я надеюсь найти помощь в этом здесь ... Я просто не могу заставить его работать, поскольку мое выражение захватывает пробелы и то, что следует, и помещает их в первую группу. Есть ли способ изменить направление RegEx? Кто-нибудь может мне с этим помочь?

ответ

4

Предполагая, что на «может или не может произойти» вы имеете в виду линии может заканчиваться до 3 пространств встречаются:

^\s*([-a-zA-Z0-9,\.'AÖÜäöüß ]+?)(?=\s{3}|\s{0,2}$) 

Это регулярное выражение использует позитивный взгляд вперед, чтобы утверждать, что либо есть 3 пробела ниже или есть до 2 пробелов, затем конец ввода.

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

Ваша цель в группе 1.

См live demo on rubular

+0

Гораздо лучше, чем у меня сейчас :) –

+0

@Tim '' ... – Bohemian

+2

Я тестировал это в .Net, и кажется, что диапазон {, 2} там не работает. Мне пришлось изменить его на {0,2}, чтобы он работал. OP, возможно, придется помнить об этом в зависимости от того, какой механизм регулярного выражения он использует. –

1

Вот мой подход.

^ *([a-zA-Z0-9,.'AÖÜäöüß-]+(?: {1,2}[a-zA-Z0-9,.'AÖÜäöüß-]+)*) 

Что вы хотите в группе соответствия 1. Это регулярное выражение использует только жадные оператор и работает на все четыре случаев, найденных в тексте образца.

В основном это соответствует всем словам в начале строки, которые отделены друг от друга не более чем двумя пробелами. После того, как найдено более 2 пробелов, совпадение завершено.

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