2017-02-23 72 views
0

Я пытаюсь заменить строку с пустым пространством («») после определенного символа (двоеточие) «:»Regex заменить из строки (Smarty)

пример: 2017 - Alpha Romeo United kingdom : New vehicle (by abc)

Я хочу выйти кладется как «2017 - Alpha Romeo United kingdom»

было бы весьма признателен, если кто-то может помочь мне написать регулярное выражение в Smarty

Большое спасибо

ответ

1

Y НУ может сделать это с помощью следующей регулярного выражения(с использованием capturing group и positive lookahead):

input  >> 2017 - Alpha Romeo United kingdom : New vehicle (by abc) 
regex search >> (?=:):(.*) 
replace with >> " " 
output  >> 2017 - Alpha Romeo United kingdom 

см demo/explanation

Smarty

{ 
    assign 
    var = "articleTitle" 
    value = "2017 - Alpha Romeo United kingdom : New vehicle (by abc)" 
} { 
    $articleTitle | regex_replace: "/(?=:):(.*)/": " " 
} 
+0

Спасибо Сов, по какой-то причине его не работает в Marty. но нижнее выражение удаляет \ n. {assign var = "articleTitle" value = "Бесплодие маловероятно, чтобы \ n было передано, говорят эксперты."} {$ articleTitle | regex_replace: "/ [\ r \ t \ n] /": ""} Я хочу, чтобы что-то работало в smarty. – Developer

+0

@ Разработчик, что вы на самом деле пытаетесь заменить? значение даже не совпадает со строкой, которую вы указали в вопросе – m87

+0

Я хочу напечатать все до двоеточия, никакая функция не работает в smarty. кроме вышеупомянутого, упомянутого в комментарии. мой окончательный результат для строки, которую я предоставил, должен быть «2017 - Alpha Romeo United Kingdom» с использованием функции regex_replace – Developer

2
 private void Form1_Load(object sender, EventArgs e) 
    { 
     string str = "2017 - Alpha Romeo United kingdom : New vehicle (by abc)"; 
     str = Regex.Replace(str, @":+(.*)", ""); 
     MessageBox.Show(str); 

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