【问题标题】:Regex in JavaScript whit multiple chars search like concatJavaScript 中的正则表达式,具有多个字符搜索,如 concat
【发布时间】:2021-12-22 13:06:03
【问题描述】:

我遇到了 javascript 中的正则表达式拆分问题。 这是我要拆分的文本。它是德语,但无关紧要,我们可以说它只是一个假人。

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

我使用这个正则表达式:/(?<=[a-z)])(?<![Gmb])(?=[A-Z])/,如果在大写字母或右括号后面紧跟着小写字母,则通过后向拆分它。如果大写字母后面有Gmb,则不会拆分。这是我通过这个拆分得到的数组:

"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
)
"

所以我现在的问题是,在后面有一个 AG 后如何拆分 arrayitem 19。结果应该是这样的:

"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
)
"

我希望我确实描述了所有可以理解的内容,并希望得到答案!感谢您的宝贵时间!

【问题讨论】:

  • 在 GMB 前瞻之后放置一个可选字符。 .?应该工作。
  • 它不是有一个拉丁字符 ä,这在你的正则表达式规则中没有给出
  • 您的意思是(?<!Gmb) 吗?如果大写字母后面有mGb 会发生什么。
  • @Randy Casburn 在 GMB 前瞻之后不确定您的意思。 .?我试过 /(?
  • 不,您应该使用/(?<=[a-z)])(?<!Gmb)(?=[A-Z])/ 来解决字符类的问题。当有多个大写字母后跟一个大写字母 + 小写字母时,您还需要调整此表达式以说明您希望也匹配的事实。

标签: javascript regex split concatenation


【解决方案1】:

你可以使用

/(?<=[\p{Ll})]|\p{Lu}(?=\p{Lu}\p{Ll}))(?<!Gmb)(?=\p{Lu})/u

this regex demo详情

  • (?&lt;=[\p{Ll})]|\p{Lu}(?=\p{Lu}\p{Ll})) - 在当前位置的左侧,应该有一个小写字母 ),或者一个大写字母后跟一个大写字母,然后是一个小写字母
  • (?&lt;!Gmb) - 当前位置左侧不能有Gmb
  • (?=\p{Lu}) - 当前位置右侧必须有一个大写字母。

确保在 JavaScript ECMAScript 2018+ 兼容的正则表达式中使用启用 Unicode 类别类的 /u 标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2022-01-18
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多