Я нуждаюсь в некоторой помощи. Я ищу regex, который соответствовал бы последнему пробелу в строке. Я использую JavaScript и классический ASP.
У меня есть длинная строка текста, который я обрезаю к 100 символам. Я хотел бы удалить последний знак для предотвращения орфографической ошибки, если обрезка сокращает слово из-за этих 100 пределов символов.
regex.replace(/[ ]$.*?/ig, '');
Кто-либо с идеями?Спасибо.
Насколько я понимаю, вам нужно удалить последний пробел и все, что после него, верно?
str = str.replace(/\s+\S*$/, "")
Регулярное выражение /^.+ [^] * $ /
будет соответствовать только последнему пробелу строки.
Попробуйте утверждение lookahead:
/ (?=[^ ]*$)/
И для произвольных пробельных символов:
/\s(?=\S*$)/
Это будет
/ +$/
Символ пробела (), хотя бы один раз (
+
), в конце строки ($
)
Обратите внимание, что помещать пробел в класс символов нет необходимости, если только вы не хотите сопоставить больше, чем символ пробела, например, табуляцию [\t ]
.
Чтобы действительно совпадал только последний пробел, используйте / $/
EDIT: Чтобы отсечь все после последнего пробела (думая об этом, это то, что вы на самом деле, кажется, хотите, вы можете использовать:
regex.replace(/ +\S*$/ig, '');
где regex означает: "Хотя бы один пробел, и любые не пробельные символы после него (\S*
), в конце строки ($
)".
Это может соответствовать только последнему биту строки после последнего пробела. Как побочный эффект, строка обрезается в конце.
Используя "классические" RE, вам нужно будет "[^] * $"
- т.е. пробел, за которым следует произвольное количество непробельных символов, за которым следует конец линия. «Непробельные символы» могут соответствовать вашему определению слова, а могут и не соответствовать - например, они также не позволят вам сократить число посередине. Если вы хотите ограничить "слово" буквами, вы можете вместо этого использовать: "[^ A-Za-z] * $"
.
Также обратите внимание, что в любом случае, если слово заканчивается ровно 100-м символом, это будет соответствовать пробелу перед ним, поэтому вы удалите это последнее слово целиком. Если вы хотите предотвратить это, вы (вероятно) захотите посмотреть на первый символ, который вы обрезали, и если это пробел, не удаляйте ничего из буфера.