2013-09-10 34 views
1

Я пытаюсь получить строку, которая соответствует шаблону регулярного выражения ({$ ...}). Но я не хочу, чтобы скобки и знак $ возвращались.PHP поиск и замена шаблона регулярного выражения

Например

{$Testpath}/Testlink 

должен вернуть

Testpath 

Мой шаблон регулярного выражения выглядит следующим образом на данный момент:

^{\$.*}$ 
+0

Почему вы используете '^' и '$' - значение должно быть записано, только если вся содержащая строка соответствует правилу? –

+1

a^{\ $ (. *)} Даст вам совпадение в массиве совпадений. Вам не нужен последний $ в вашем регулярном выражении, потому что он соответствует концу строки, но искомое значение не находится в конце. – Christoph

ответ

3

Попробуйте следующее регулярное выражение:

^\{\$\K[^}]*(?=\}) 

Regex101 Demo

Это выражение соответствующего два запуска из-строки ^ тогда буквального { тогда буквальный $ то игнорирует тех, кто использует \K якоря, то он соответствует один или несколько символам, которые не являются } то смотрит вперед (?=\}) для литерала }.

Вы не можете нуждаться в конце-строки якорь $, потому что текст, который вы пытаетесь соответствовать не может заканчиваться в конце строки, и вы, возможно, не потребуется начало-строки ^ якоря по противоположной причине , то есть шаблон, который вы пытаетесь сопоставить, может не быть в начале строки или строки.

Я думаю, вы должны удалить ^ и $ и использовать глобальный модификатор.

+0

thx его рабочий .. –

+0

@JannisHanke Добро пожаловать, пожалуйста, примите ответ, когда сможете. –

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