2016-06-27 7 views
-2

Пример строки:Regex обрезать пробелы из конца неизвестных строк длины слов

This is "a" test   
This & test   
This test string-has more words  

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

Мое приложение использует () вокруг разделов регулярного выражения, чтобы вернуть только ту часть сопоставленного шаблона, если это необходимо.

Мне нужно регулярное выражение, которое вернет полную строку независимо от длины, минус пробелы на конце.

My current is (.*)\s{1,}$|(.*\S)$ Это работает, если в конце строки есть 0 пробелов или 1 пробел в конце строки, но 2 пробела или больше, а пробелы включены в вывод.

+0

Добро пожаловать в Stack Overflow! Пожалуйста, покажите нам [то, что вы пробовали] (// whathaveyoutried.com), а также конкретную проблему или ошибку, с которыми вы сталкиваетесь. Обязательно включите [Минимальный, Полный, Подтверждаемый Пример] (// stackoverflow.com/help/mcve). –

+0

Я не уверен, почему я получаю downvoted ... Сначала я не предоставлял свой код, потому что я опубликовал его со своего мобильного телефона, но я добавил свое текущее регулярное выражение, и я все равно получаю downvoted. –

+1

Вы можете попробовать: '/.*(?= | $) /'. Кроме того, какой язык/инструмент вы используете? –

ответ

0

Ваши объяснения слишком малы. Я не знаю, какой язык вы хотите использовать, но я рекомендую вам использовать обрезкафункция для удаления любых пробелов от начала и до конца строки. но если вы настаиваете на использовании регулярных выражений, здесь есть регулярное выражение для ваших намереваются:

/^[^ ][\w\W ]*[^ ]/ 

удаляет один или несколько пробелов из начала и конца вашей строки.
он поддерживает ЛЮБОЙ обычный символ, кроме пробела. Если вам нужно больше ограничений, вы можете манипулировать \ w \ W инструкцией. Если есть ошибки в приведенном выше выражении, просто скажите мне.

+0

Я меняю крошечную вещь, пожалуйста, напишите выражение, чтобы иметь лучшую производительность. – HosSeinM

+0

Это не часть какого-либо языка/кода, это функция этого приложения, которое мы используем, и в приложении вы можете писать регулярное выражение, поэтому я не могу использовать функцию trim. Независимо от того, что приведенное выше регулярное выражение работает безупречно, чтобы удалить конечные пробелы, но не пробелы в начале, но поскольку это не было требованием, я дам вам ответ.Огромное спасибо. –

+0

Спасибо Брайан. если вы не хотите удалять пробелы с начала, просто удалите [^] с начала выражения. Я имею в виду: **/^ [\ w \ W] * [^]/** – HosSeinM

1

Если вам нужно регулярное выражение, чтобы сделать это: ^\s*(\S(.*\S)?)\s*$

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

0

Этот код, кажется, работает: .*\S

И это снимает обе ведущие и завершающие пробелы: \S.*\S

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