Regex - wie man eine bestimmte Anzahl willkürlicher Wörter entspricht, gefolgt von einem bestimmten Wort
Posted: 19 Aug 2025, 07:13
Ich habe mich gefragt, ob mir jemand in diesem Thema helfen könnte, ich versuche derzeit, eine Art Fuzzy -Matching zu machen. < /p>
Grundsätzlich möchte ich keine Beziehungen aus unstrukturiertem Text abgeben und gemeinsame Muster für diese Beziehungen identifiziert. Trotzdem sind die Eingangszeichenfolgen etwas willkürlich - wie üblich für menschliche produzierte Eingaben. < /p>
e.g. Diese beiden Eingangszeichenfolgen: < /p>
Entität ist typischerweise größer als eine Entität < /p>
Entität ist ... ein paar andere Wörter ... größer als die Entität, die zu den beiden Strings mit den folgenden A -br />
entspricht. />
(Entität) ist (.+? Übereinstimmend alles erreicht größer. Es kann eine willkürliche Menge von Wörtern dazwischen "und" größer "geben. Dies führt in bestimmten Fällen zu falschen Übereinstimmungen, daher möchte ich die Anzahl der "Wörter" dazwischen "und" größer "einschränken. Ich weiß, dass dies eigentlich kein Wort ist, aber für meinen Zweck sollte es in Ordnung sein. Wenn ich übereinstimmen möchte, z. up to 5 words this would be
(\S+\s+){0,5}
Combining this with the previous regex leads me to
(Entity) ist ((\ s+\ s+) {0,5}? (? = größer)) größer als (Entity) < /p>
< /blockquote>
< /blockquote>
, aber das funktioniert nicht. Kann mir jemand Ratschläge dazu geben? Kann ich das tatsächlich mit Regex übereinstimmen? < /p>
Dies ist ein Java -Projekt. Für die Lesbarkeit habe ich die entsiedelnden Backslashes in den Regex -Mustern entfernt.
Grundsätzlich möchte ich keine Beziehungen aus unstrukturiertem Text abgeben und gemeinsame Muster für diese Beziehungen identifiziert. Trotzdem sind die Eingangszeichenfolgen etwas willkürlich - wie üblich für menschliche produzierte Eingaben. < /p>
e.g. Diese beiden Eingangszeichenfolgen: < /p>
Entität ist typischerweise größer als eine Entität < /p>
Entität ist ... ein paar andere Wörter ... größer als die Entität, die zu den beiden Strings mit den folgenden A -br />
entspricht. />
(Entität) ist (.+? Übereinstimmend alles erreicht größer. Es kann eine willkürliche Menge von Wörtern dazwischen "und" größer "geben. Dies führt in bestimmten Fällen zu falschen Übereinstimmungen, daher möchte ich die Anzahl der "Wörter" dazwischen "und" größer "einschränken. Ich weiß, dass dies eigentlich kein Wort ist, aber für meinen Zweck sollte es in Ordnung sein. Wenn ich übereinstimmen möchte, z. up to 5 words this would be
(\S+\s+){0,5}
Combining this with the previous regex leads me to
(Entity) ist ((\ s+\ s+) {0,5}? (? = größer)) größer als (Entity) < /p>
< /blockquote>
< /blockquote>
, aber das funktioniert nicht. Kann mir jemand Ratschläge dazu geben? Kann ich das tatsächlich mit Regex übereinstimmen? < /p>
Dies ist ein Java -Projekt. Für die Lesbarkeit habe ich die entsiedelnden Backslashes in den Regex -Mustern entfernt.