К сожалению, несмотря на то, что я пытался изучать регулярные выражения хотя бы раз в год в течение стольких лет, сколько я себя помню, я всегда забываю, поскольку использую их так редко. В этом году мое новогоднее решение - больше не пытаться выучить регулярное выражение - так что в этом году, чтобы спасти меня от слез, я отдам его на Stack Overflow . (Последний рождественский ремикс).
Я хочу передать строку в этом формате {getThis}
и получить строку getThis
. Может ли кто-нибудь помочь придерживаться моего новогоднего решения?
Связанные вопросы о переполнении стека:
javascript
regex
ChrisInCambo
источник
источник
Ответы:
Если ваша строка всегда будет в этом формате, регулярное выражение излишне:
substring(1
означает начало одного символа (сразу после первого{
) и,g.length-1)
означает принимать символы до (но не включая) символа с длиной строки минус один. Это работает, потому что позиция отсчитывается от нуля, т.е.g.length-1
является последней позицией.Для других оригинального плаката читателей: Если это имеет быть регулярным выражением, использование ,
/{([^}]*)}/
если вы хотите , чтобы пустые строки, или/{([^}]+)}/
если вы хотите , чтобы соответствовать только , когда есть по крайней мере один символ между фигурными скобками. Сломать:/
: запустить шаблон регулярного выражения{
: буквальная фигурная скобка(
: начать захват[
: начать определение класса персонажей для захвата^}
: "ничего кроме}
"]
: ОК, это все определение нашего класса*
: любое количество символов, соответствующих этому классу, который мы только что определили)
: запись завершена}
: буквальная фигурная скобка должна сразу следовать за тем, что мы захватили/
: завершить шаблон регулярного выраженияисточник
Пытаться
Это означает, что сопоставьте любой символ между {и}, но не будьте жадными - сопоставьте самую короткую строку, которая заканчивается на} (? Перестает * быть жадным). Скобки позволяют извлечь совпавшую часть.
Другой способ был бы
Соответствует любому символу, кроме символа} (еще один способ не жадничать)
источник
g
в конце делает его глобальным поиском. См. Рабочий примеристочник
Попробуй это:
Например
вернется
gskinner.com
,ssd.sd
.источник
\}
в первом блоке?}
, даже если она не начинается с{
.Вот простое решение с использованием замены javascript
Как указано в принятом ответе выше, исходная проблема легко решается с помощью подстроки, но использование замены может решить более сложные варианты использования.
Если у вас есть строка типа "randomstring999 [fieldname]", вы используете немного другой шаблон для получения fieldname.
источник
Этот работает в Textmate и соответствует всему в файле CSS между фигурными скобками.
selector {. . matches here including white space. . .}
Если вы хотите в дальнейшем иметь возможность возвращать контент, заключите все это в еще один набор круглых скобок, например так:
и вы можете получить доступ к содержимому через $ 1.
Это также работает для функций, но я не тестировал его с вложенными фигурными скобками.
источник
Вы хотите использовать регулярное выражение вперед и назад. Это даст вам только то, что находится внутри фигурных скобок:
источник
Попробуй это
источник
Регулярное выражение для получения массивов строк с заключенными в фигурные скобки происходит в строке, а не просто для поиска первого вхождения.
источник
Я просмотрел другие ответы, и, похоже, в них отсутствует жизненная логика. т.е. выберите все между двумя ПОСЛЕДУЮЩИМИ скобками, но НЕ скобки
Итак, вот мой ответ
источник
К
.replace(/.*{(.*)}.*/, '$1')
сожалению, более простой возвращает всю строку, если регулярное выражение не соответствует. В приведенном выше фрагменте кода легче обнаружить совпадение.источник
Попробуйте это, согласно http://www.regextester.com, он работает для js нормально.
([^{]*?)(?=\})
источник
/([^{]*?)\w(?=\})/gmi
Вы можете использовать эту рекурсию регулярных выражений для сопоставления всего, даже другого
{}
(например, текста JSON):источник
Даже это помогает мне решать чью-то проблему,
Например:
Вывод:
источник