2015-08-16 2 views
0

У меня есть спецификация, в которой указано, что конкретное поле будет альфа-текстом, с правом пробелом с пробелами длиной до 10 символов, и я хочу захватить альфа-часть матча.Regex для захвата букв и пробелов

Это выражение захватывает весь раздел:

"([[:alpha:][:s:]]{10})" 

Однако, я только хочу, чтобы захватить альфа-часть, и по-прежнему соответствовать (но не захват) на оставшемся белом пространстве. Поэтому, если альфа длится 3 символа, следующий матч должен содержать 7 белых пробелов.

Как я могу это сделать?

+0

К сожалению, регулярное выражение не знает, как считать. Поскольку общее количество символов составляет всего десять, вы можете уйти с [уродливым регулярным выражением вроде этого] (https://regex101.com/r/wU4xK9/1), но я бы рекомендовал против него во всех, кроме крайних случаях. – dasblinkenlight

ответ

0

Это регулярное выражение шаблон будет соответствовать строке, начиная с (необязательно) [A-Za-Z] символы, заканчивая Шифрование до 10 пространств, на общую длину строки из 10.

"^([A-Za-z]+)?\\ {0,10}" 

Затем я добавили positive lookahead, чтобы гарантировать, что шаблон совпадает лишь тогда, когда длина строки 10.

"^(?=.{10}$)([A-Za-z]+)?\\ {0,10}$" 

Изменить: Попробуйте это с помощью [: Alpha:] и [: площадь:]

"^(?=.{10}$)([:alpha:]+)?[:space:]{0,10}$" 
+1

Требование - это наоборот. [a-zA-Z] символы слева – d0nut

+0

Спасибо. Я использую [ECMAScript] (http://www.cplusplus.com/reference/regex/ECMAScript/), который немного отличается от формата. Но это решение намекает на возможный путь вперед. – abelenky

+0

@iismathwizard какая разница? Я бы подумал, что A-Z должен прийти к a-z эстетически. – Zachafer

0

Я бы сказал, что лучше всего использовать 2 регулярных выражения. Regex действительно не поддерживает то, что вы пытаетесь сделать.

Первое регулярное выражение будет получить все строки длины 10 правых Проложенных пробелами

([a-zA-Z\s]{10}) 

После этого, просто захватить часть слова. Мы знаем, что каждая строка содержит всего 10 символов.

(\w+)\s* 
Смежные вопросы