1021 Stimmen

Reguläre Ausdrücke: Gibt es einen AND-Operator?

Natürlich können Sie die | (Rohr?) zu repräsentieren OR aber gibt es eine Möglichkeit, die AND auch?

Konkret möchte ich Textabschnitte abgleichen, die ALLE einen bestimmten Satz enthalten, aber in keiner bestimmten Reihenfolge.

2 Stimmen

Meinen Sie damit, dass Sie Phrasen in einem Text finden wollen, wobei jede dieser Phrasen eine gültige Permutation der Wörter in einer gegebenen Phrase ist?

3 Stimmen

Ich stelle das hier rein, weil drei oder vier Antworten es ignorieren. Lookahead stimmt nicht für jede Klausel mit der gleichen Länge überein, es sei denn, sie enden auf $. Ein Lookahead könnte auf vier Zeichen passen, ein anderer auf 6. Zum Beispiel wird (?=a*)(?=aab) mit aabaaaaba übereinstimmen.

4 Stimmen

Versuchen Sie, nur das "Leerzeichen" für den Operator "AND" zu verwenden.

8voto

hrs Punkte 319

((yes).*(no))|((no).*(yes))

Passt zu einem Satz, der beides enthält yes y no zur gleichen Zeit, unabhängig von der Reihenfolge, in der sie erscheinen:

Do i like cookies? **Yes**, i do. But milk - **no**, definitely no.

**No**, you may not have my phone. **Yes**, you may go f yourself.

Werden beide übereinstimmen, ohne den Fall zu berücksichtigen.

0 Stimmen

Sehr effizient.

5voto

Hammad Khan Punkte 15166

Verwenden Sie AND außerhalb des regulären Ausdrucks. In PHP scheint der Lookahead-Operator bei mir nicht zu funktionieren, stattdessen habe ich Folgendes verwendet

if( preg_match("/^.{3,}$/",$pass1) && !preg_match("/\s{1}/",$pass1))
    return true;
else
    return false;

Die obige Regex passt, wenn das Passwort mindestens 3 Zeichen lang ist und keine Leerzeichen enthält.

5voto

lochiwei Punkte 902

Hier ist eine mögliche "Form" für den Operator "und":

Nehmen Sie die folgende Regex als Beispiel:

Wenn wir Wörter ohne das "e"-Zeichen finden wollen, können wir so vorgehen:

/\b[^\We]+\b/g
  • \W bedeutet NICHT ein "Wort"-Zeichen.
  • ^\W bedeutet ein "Wort"-Zeichen.
  • [^\We] bedeutet ein "Wort"-Zeichen, aber nicht ein "e".

in Aktion sehen: Wort ohne e

"und"-Operator für reguläre Ausdrücke

Ich denke, dieses Muster kann als " " verwendet werden. y "Operator für reguläre Ausdrücke.

Im Allgemeinen, wenn:

  • A = not a
  • B = not b

dann:

[^AB] = not(A or B) 
      = not(A) and not(B) 
      = a and b

Unterschiedsmenge

Wenn wir also das Konzept der Differenzmenge in regulären Ausdrücken zu verwenden, könnten wir dies tun:

a - b = a and not(b)
      = a and B
      = [^Ab]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X