Tengo una serie de palabras que trato de capturar.
Tengo el siguiente problema:
Ejemplo (negrita es lo que trato de capturar):
Me gusta Apple Bananas y Cars .
construir casas podría ser salado + difícil , dijo Jessica.
Este es el RegEx que probé hasta ahora, solo funciona si la cadena "sin captura" no incluye palabras en mayúsculas: /(?:[a-zäöü]*)([\p{L} +().&]+[Cars|Hard])/gu
Puede comenzar la coincidencia con un carácter en mayúscula que permita también los caracteres en mayúscula alemanes y luego, opcionalmente, repetir la coincidencia con palabras que comiencen con un carácter en mayúscula o un "carácter especial".
Luego termina el partido con una alternancia que coincida con Hard o Cars.
(?<!\S)[A-ZÄÖÜß][a-zA-ZäöüßÄÖÜẞ]*(?:\s+(?:[A-ZÄÖÜß][a-zA-ZäöüßÄÖÜẞ]*|[+()&]))*\s+(?:Hard|Cars)\bExplicación
(?<!\S) Afirma un límite de espacio en blanco a la izquierda para evitar que comience la coincidencia después de un carácter que no sea un espacio en blanco[A-ZÄÖÜß][a-zA-ZäöüßÄÖÜẞ]* Coincide con una palabra que comienza con un carácter en mayúscula(?: Grupo de no captura para hacer coincidir como una parte completa\s+ Combina 1+ caracteres de espacio en blanco(?: grupo de no captura[A-ZÄÖÜß][a-zA-ZäöüßÄÖÜẞ]* Coincide con una palabra que comienza con mayúscula| O[+()&] Coincide con uno de los caracteres "especiales") Cerrar el grupo de no captura)* Cerrar el grupo de no captura y opcionalmente repetirlo\s+ Combina 1+ caracteres de espacio en blanco(?:Hard|Cars) Empareja una de las alternativas\b Un límite de palabras para evitar una coincidencia parcial de palabrasVea una demostración de expresiones regulares .
Use \p{Lu} para letras mayúsculas:
(?:[\p{Lu}+()&][\p{L}+()&]* )+(?:Cars|Hard)Vea la demostración en vivo (que muestra letras con diéresis y ß coincidentes).