/ / RegExp: Gibt es eine Möglichkeit, Zeichenfolgen ohne Ecranisierung an RegExp zu übergeben? - Regex, pcre

RegExp: Gibt es eine Möglichkeit, String ohne Expanalisation an Regexp zu übergeben? - Regex, pcre

Gibt es eine Möglichkeit, einen String an regexp zu übergeben und sich nicht um die Ecranisierung von Sonderzeichen zu kümmern?

Zum Beispiel finde ich keine Zeile, die mit den Wörtern "Nord + West" beginnt, da "n" und "h +" ausgewählt werden sollten. Frage: Gibt es eine spezielle Kombination, um Text so zu schreiben, wie er ist?

/^s+(<some special combination> north+west)s+/i

oder kennst du vielleicht die funktion die meinen text richtig ecranisieren kann?

Antworten:

1 für die Antwort № 1

In PHP und Perl können Sie verwenden Q...E Trennzeichen, um Metazeichen in regulären Ausdrücken automatisch zu maskieren. Zitieren der Arzt:

Q und E kann verwendet werden, um reguläre Zeichen im Muster zu ignorieren. Beispielsweise: w+Q.$.E$ stimmt mit einem oder mehreren Wortzeichen überein, gefolgt von Literalen .$. und am Ende der Schnur verankert.


0 für die Antwort № 2

Zusätzlich zu @ raina77ow AntwortWenn Sie pcre über eine Sprache wie PHP verwenden, die Musterbegrenzer benötigt, können Sie das nicht verwenden Q...E Funktion, wenn Ihre Zeichenfolge das öffnende oder schließende Trennzeichen enthält. Zum Beispiel können Sie keine Muster schreiben wie:

/Qabc/defE/
~Qabc~defE~
[Qabc[defE]
[Qabc]defE]
(Qabc)defE)
(Qabc(defE)

Der einzige Weg ist, das zu benutzen preg_quote Funktion und den Begrenzer zu setzen (nur wenn dies kein spezielles Regex-Zeichen ist) in seinem zweiten Parameter.