Estoy usando iOS Shortcuts y lo estoy usando para obtener el contenido de la página (convierte la página a RTF), luego lo paso por make text para convertirlo en texto plano.
Estoy intentando desarrollar una regex con sabor a IUC para buscar palabras/frases clave en una lista de páginas sobre las que estoy haciendo un bucle con un while cada una, pero quiero que la expresión regular excluya otras frases y evite un falso positivo.
Lo tengo configurado con dos grupos de captura. No estoy seguro de si se desea que el segundo grupo sea un grupo de no captura, o no intentar la captura en absoluto. Sólo creo que el segundo debe ser un grupo de captura, o de no captura para el AND lógico proporcionado. He leído que (esto)(aquello) actúa como un y, pero no estoy seguro de si cualquiera de los dos es un negado, si sigue esa lógica. Por esa razón, no estoy seguro de si el negado no debe ser su propio grupo de captura, grupo de no captura, o no debe ser el uso de los corchetes en absoluto. Había intentado algunas cosas de grupo de captura anidado, pero eso parece no seguir la sintaxis.
Actualmente, he probado una gran variedad de expresiones regulares. No tengo una lista completa, pero puedo compartir algunas permutaciones que he probado empezando por la más reciente:
(?>Include\sTerm\sOne|Include\sTerm\sTwo|Include\sTerm\s3)(?:<!Exclude\sTerm\sOne|Exclude\sTerm\sTwo|Exclude\sTerm\s3)
(?Include\sTerm\sOne|Include\sTerm\sTwo|Include\sTerm\s3)^(?!Exclude\sTerm\sOne|Exclude\sTerm\sTwo|Exclude\sTerm\s3)
Para que quede claro, quiero que primero busque los términos excluyentes y falle si encuentra alguno. Luego, si no encuentra ninguno de estos términos de negación, entonces comience a buscar en los términos de inclusión. Está bien que los términos de la lista de inclusión y de la lista de exclusión, respectivos a cada agrupación, se traten sobre una base OR (por tubería |) ya que ese es el comportamiento que busco. Por último, quiero empezar mi búsqueda en la parte superior de la página y que deje de buscar/intentar capturar en este orden lógico:
- Excluir término encontrado, STOP -- Primer término de inclusión encontrado, STOP
Nota final, esta búsqueda se realiza obviamente sobre múltiples líneas. Sólo busco capturar el término de inclusión, no el de exclusión. Sólo quiero que el término de exclusión anule una coincidencia de ambos existe (ya sea antes o después - cruzar direccionalmente). Es decir, si existe un término de exclusión, negar el término positivo y proporcionar cero coincidencias.