2017-02-23 2 views
0

Je suis en train de remplacer une chaîne avec un espace vide (« ») après un caractère spécifique (deux points) « : »Regex remplacer à partir d'une chaîne (Smarty)

exemple: 2017 - Alpha Romeo United kingdom : New vehicle (by abc)

Je veux sortir mettre en "2017 - Alpha Romeo United kingdom"

il serait très apprécié si quelqu'un peut me aider à écrire regex dans Smarty

Merci beaucoup

Répondre

1

Y ous pourrait le faire en utilisant les éléments suivants regex(en utilisant capturing group et positive lookahead):

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

voir demo/explanation

Smarty

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

Merci siam, pour une raison quelconque ça ne marche pas dans s marty. mais l'expression ci-dessous supprime \ n. {assign var = "articleTitle" value = "L'infertilité ne devrait pas être transmise, disent les experts."} {$ titreArticle | regex_replace: "/ [\ r \ t \ n] /": ""} Je veux que quelque chose fonctionne dans smarty. – Developer

+0

@Developer ce que vous essayez réellement de remplacer? la valeur ne correspond même pas à la chaîne que vous avez fournie dans la question – m87

+0

Je veux imprimer tout avant deux points, aucune fonction ne semble fonctionner dans smarty. sauf celui ci-dessus je l'ai mentionné dans le commentaire. ma sortie finale pour la chaîne que je fournis devrait être "2017 - Alpha Romeo Royaume-Uni" en utilisant la fonction 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); 

    }