I have a problem with regex splitting in javascript. This is my text I want to split. It is in german language, but it is irrelevant, we can say it is just a dummy.
Gesamtwirtschaft, z. B. primärer, sekundärer, tertiärer Sektor, erwerbswirtschaftliche BetriebeEinstellungsgesprächTarifverträge (z. B. Entgelttarifvertrag, Manteltarifvertrag)EntgeltfortzahlungsgesetzBGB-KündigungBetriebsvereinbarungen bzw. Personalvertretung auf Grundlage des PersonalvertretungsgesetzesKündigungsschutzgesetzWirtschaftsorganisationenArbeitnehmervertretung, BetriebsratGeltungsbereichTarifverträge (z. B. Entgelttarifvertrag, Manteltarifvertrag)IT-Weiterbildung ergänzend zur Ausbildung in den IT-BerufenSozialabgaben: Krankenversicherung, Arbeitslosenversicherung, Rentenversicherung, PflegeversicherungLohnsteuer, KirchensteuerBundeselterngeld- und ElternzeitgesetzZiele von BetriebenZiele von BetriebenRentabilitätFusionKapitalgesellschaften, z. B. GmbH, AGMärkte und PreisbildungProduktpalette und MärkteVerjährungRechtsgeschäfteUnterschiedliche Lernorte, auf regionaler EbeneMöglichkeiten und Grenzen einer Existenzgründung, BusinessplanInternationale Spezialisierung, GlobalisierungMöglichkeiten und Grenzen der sozialen Marktwirtschaft
I use this regex : /(?<=[a-z)])(?<![Gmb])(?=[A-Z])/
for splitting it by lookbehind if there is a lowercase immediately behind an uppercase letter or a closing bracket. It will not split if there was Gmb behind the uppercase letter. This is the array i get with this split:
"Array
(
[0] => Gesamtwirtschaft, z. B. primärer, sekundärer, tertiärer Sektor, erwerbswirtschaftliche Betriebe
[1] => Einstellungsgespräch
[2] => Tarifverträge (z. B. Entgelttarifvertrag, Manteltarifvertrag)
[3] => Entgeltfortzahlungsgesetz
[4] => BGB-Kündigung
[5] => Betriebsvereinbarungen bzw. Personalvertretung auf Grundlage des Personalvertretungsgesetzes
[6] => Kündigungsschutzgesetz
[7] => Wirtschaftsorganisationen
[8] => Arbeitnehmervertretung, Betriebsrat
[9] => Geltungsbereich
[10] => Tarifverträge (z. B. Entgelttarifvertrag, Manteltarifvertrag)
[11] => IT-Weiterbildung ergänzend zur Ausbildung in den IT-Berufen
[12] => Sozialabgaben: Krankenversicherung, Arbeitslosenversicherung, Rentenversicherung, Pflegeversicherung
[13] => Lohnsteuer, Kirchensteuer
[14] => Bundeselterngeld- und Elternzeitgesetz
[15] => Ziele von Betrieben
[16] => Ziele von Betrieben
[17] => Rentabilität
[18] => Fusion
[19] => Kapitalgesellschaften, z. B. GmbH, AGMärkte und Preisbildung
[20] => Produktpalette und Märkte
[21] => Verjährung
[22] => Rechtsgeschäfte
[23] => Unterschiedliche Lernorte, auf regionaler Ebene
[24] => Möglichkeiten und Grenzen einer Existenzgründung, Businessplan
[25] => Internationale Spezialisierung, Globalisierung
[26] => Möglichkeiten und Grenzen der sozialen Marktwirtschaft
)
"
So my question is now how can I split arrayitem 19 after there is an AG in the lookbehind. The outcome should be this:
"Array
(
[0] => Gesamtwirtschaft, z. B. primärer, sekundärer, tertiärer Sektor, erwerbswirtschaftliche Betriebe
[1] => Einstellungsgespräch
[2] => Tarifverträge (z. B. Entgelttarifvertrag, Manteltarifvertrag)
[3] => Entgeltfortzahlungsgesetz
[4] => BGB-Kündigung
[5] => Betriebsvereinbarungen bzw. Personalvertretung auf Grundlage des Personalvertretungsgesetzes
[6] => Kündigungsschutzgesetz
[7] => Wirtschaftsorganisationen
[8] => Arbeitnehmervertretung, Betriebsrat
[9] => Geltungsbereich
[10] => Tarifverträge (z. B. Entgelttarifvertrag, Manteltarifvertrag)
[11] => IT-Weiterbildung ergänzend zur Ausbildung in den IT-Berufen
[12] => Sozialabgaben: Krankenversicherung, Arbeitslosenversicherung, Rentenversicherung, Pflegeversicherung
[13] => Lohnsteuer, Kirchensteuer
[14] => Bundeselterngeld- und Elternzeitgesetz
[15] => Ziele von Betrieben
[16] => Ziele von Betrieben
[17] => Rentabilität
[18] => Fusion
[19] => Kapitalgesellschaften, z. B. GmbH, AG
[20] => Märkte und Preisbildung
[21] => Produktpalette und Märkte
[22] => Verjährung
[23] => Rechtsgeschäfte
[24] => Unterschiedliche Lernorte, auf regionaler Ebene
[25] => Möglichkeiten und Grenzen einer Existenzgründung, Businessplan
[26] => Internationale Spezialisierung, Globalisierung
[27] => Möglichkeiten und Grenzen der sozialen Marktwirtschaft
)
"
I hope I did described everything understandable, and hope for answers! Thank you for your time!
CodePudding user response:
You can use
/(?<=[\p{Ll})]|\p{Lu}(?=\p{Lu}\p{Ll}))(?<!Gmb)(?=\p{Lu})/u
See this regex demo. Details:
(?<=[\p{Ll})]|\p{Lu}(?=\p{Lu}\p{Ll}))
- immediately to the left of the current location, there should be either a lowercase letter,)
, or an uppercase letter that is followed with an uppercase letter and then a lowercase letter(?<!Gmb)
- there must be noGmb
immediately to the left of the current location(?=\p{Lu})
- there must be an uppercase letter immediately to the right of the current location.
Make sure you use the /u
flag that enables Unicode category classes in JavaScript ECMAScript 2018 compatible regex.