2016-06-27 10 views
-1

Ich möchte dich etwas Einfaches fragen. Ich habe String wie:Wie ersetzt man einen String, der eine Klammer enthält? (Regex)

glücklich (adj)

traurig (v)

und ich möchte diese Klammern mit leeren String (“„) ersetzen, so würde es so sein :

glücklich

traurig

Ich weiß, dass ich Regex verwenden muss, aber weil ich neu in Regex bin, können Sie mir mit dem Muster Jungs helfen? danke: ')

+0

Mögliche Duplikat [php: Klammern/Inhalt aus einem String entfernen] (http://stackoverflow.com/questions/1336672/php-remove-brackets-contents -from-a-string) oder [Text zwischen Klammern PHP entfernen] (http://stackoverflow.com/questions/2174362/remove-text-between-parentheses-php). –

Antwort

3

Die ( und ) müssen maskiert werden. . ist ein beliebiges Zeichen und * ist null oder mehr Vorkommen des vorherigen Zeichen/grop; + ist einer oder mehrere. So dass mit delimiters zusammen und Sie haben:

<?php 
echo preg_replace('/\(.*?\)/', '', 'happy (adj) 

sad (v)'); 

Notiere die ? auch, dass die Gefräßigkeit des * quantifier wegnimmt, http://www.regular-expressions.info/possessive.html.

Regex Demo: https://regex101.com/r/zQ5bW1/2
PHP Demo: https://eval.in/595919

oder Sie können eine negierte Zeichenklasse verwenden, um die Schließung ) zu finden.

echo preg_replace('/\([^)]+\)/', '', 'happy (adj) 

sad (v)'); 

Alternative regex Demo: https://regex101.com/r/zQ5bW1/3

+0

Ich denke, der Platz vor der Klammer sollte auch entfernt werden. – Akam

+0

Nicht sicher, ob dies die Absicht von OP ist oder nicht. Hier sind Ansätze, wenn es ist, https://regex101.com/r/zQ5bW1/4 oder https://regex101.com/r/zQ5bW1/5 – chris85

Verwandte Themen