Nichts ist falsch, per se, mit dem regulären Ausdruck. Es stimmt einfach nicht mit der angegebenen Zeichenfolge überein.
Sie müssen eine gute Referenz zu regulären Ausdrücken finden und die Grundlagen lernen. Einer ist http://www.regular-expressions.info/. Das kann oder kann nicht eine gute Referenz für Sie als Anfänger sein. (. Ich sein RegexBuddy Werkzeug bin mit Ihrem regulären Ausdruck zu testen)
Hier ist eine grobe Aufteilung des Ausdrucks:
- Es gibt drei einfangenden Gruppen, umgaben jeweils von einem eigenen Paar Klammern. (Beachten Sie, dass Klammern, zusammen mit vielen anderen Zeichen, in regulären Ausdrücken eine besondere Bedeutung haben. Um eine Klammer in einer Richtung zu finden, müssen Sie sie umgehen. Der angegebene reguläre Ausdruck führt dies nicht aus.)
- In der ersten Erfassung Gruppe gibt es zwei mögliche Möglichkeiten für ein Match. Sie sind:
- Ein oder mehr „Wort“ Zeichen, gefolgt von null oder mehr Leerzeichen oder
- Ein Strich, gefolgt von einem oder mehrere „Wort“ Zeichen, gefolgt von null oder mehr Räumen
- In In der zweiten Erfassungsgruppe gibt es 10 mögliche Übereinstimmungen: die aufgelisteten Operatorsymbole (ohne umgebende Leerzeichen) oder die aufgelisteten Textoperatoren (mit umgebenden Leerzeichen)
- In der dritten Erfassungsgruppe stimmen null oder mehr eines beliebigen Zeichens überein .
Der String 'Produkt (getProduct_abc) in (xyz)' nicht auf die 'in
' Betreiber dort, weil vor dem Match mehr als nur "Wort" Zeichen. Die Klammern werden nicht als "Wort" -Zeichen betrachtet und führen daher zum Fehlschlagen der Übereinstimmung.
Die zweite Zeichenfolge ('100 = product (getProduct_abc) in (Xyz)') stimmt überein, da sie das Gleichheitszeichen ('=') als übereinstimmenden Operator für die zweite Erfassungsgruppe verwendet. '100' ist eine Zeichenfolge für alle "Wort" -Zeichen und alles nach dem '=' stimmt mit dem Teil 'irgendein Zeichen' überein, so dass die Übereinstimmung erfolgreich ist. Je nachdem, wie das Ende der Zeichenfolge behandelt wird, stimmen einige Sprachen möglicherweise nicht mit dieser Zeichenfolge überein, wenn sie sich am Ende der Zeichenfolge befindet.
Wenn die erste Zeichenfolge ist angenommen zu entsprechen, dann müssen Sie mit Ihren geschäftlichen Benutzern überprüfen. Vielleicht sind sie auch Anfänger mit regulären Ausdrücken und haben dir einen gegeben, der nicht funktioniert.;-)
Es sieht aus wie Sie versuchen, in einem regulären Ausdruck zu viel zu tun. Brechen Sie es ab und analysieren Sie die Zeichenfolge richtig. –
Anon, dies ist der Reguläre Ausdruck, den unsere Geschäftsbenutzer zur Validierung geben. Wir können es nicht ändern. Bitte lassen Sie mich wissen, was der bessere Weg ist, es klar zu verstehen und zu analysieren. Jede Hilfe ist sehr geschätzt. – Preethi
@Anon: Der reguläre Ausdruck, wie es unabhängig ist, ist in Ordnung. Wir können nicht beurteilen, ob es zu viel oder zu wenig versucht, weil wir Preethis Anforderungen nicht kennen. Ein komplexerer Parser kann für seine Bedürfnisse zu komplex sein - oder er könnte einen brauchen. Wir wissen einfach nicht genug über seine Aufgabe. – RobertB