Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

340
Vistas
¿Cómo encontrar texto equivalente en otro con texto agregado?

Dado:

 const textToFind = 'Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, ' const paragraph = 'Lorem Ipsum has been the industry's [standard](wwww.meh.com) dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.'

Necesito salida:

Lorem Ipsum has been the industry's [standard](wwww.meh.com) dummy text ever since the 1500s,

es decir, haga coincidir textToFind en el paragraph y luego extráigalo.

Descubrí esta expresión regular para encontrar enlaces de descuento: /\[([^\]]+)\]\([^)"]+\)/g , pero no estoy seguro de qué más hacer después de eso.

textToFind se deriva del paragraph al principio, y lo necesito para calcular el ancho de cada línea, por lo que no estoy considerando modificar standard a algún identificador único (para reemplazarlo más tarde con el texto real), porque si el los caracteres cambian, entonces también lo hará el ancho.

Información adicional:

Estoy usando React Native Text

 <Text onTextLayout={....} numberOfLines={x} />

para obtener las líneas representadas en un párrafo x , pero este texto no se ha convertido desde Markdown (si es así, los enlaces se pierden, ya que solo analiza texto puro, no View s, no Text properties, etc.)

Corrientemente:

Estoy pensando en cifrar el [plainText](url)

(por ejemplo reversePlainText().QueueShiftTwoCharacters() ),

y guarde este cifrado en paralelo

 recordedLinks = Queue<Record<encryptedPlainText, originalUnparsedMarkdown>>()`

y lo consulta en orden.

De esta manera, al pasar de [plainText](url) a texto sin formato encryptedPlainText (y casi perder la URL y el posicionamiento), podemos hacer coincidir los enlaces recordedLinks en el orden en que la pantalla representa cada una de estas líneas de texto rúnicas crípticas , darán los mensajes de texto sin formato encryptedPlainText . sus enlaces en forma FIFO.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Estableceré el enfoque "Pythonic" que tendría para este problema. A continuación describiré los pasos que seguiría:

  • aplique su expresión regular para la coincidencia de enlaces en el párrafo, recupere el triple dado por (<link_match>, <word_match>, <start_index>)
  • transforme el párrafo en su forma sin enlaces y actualice los triples con el nuevo valor <start_index>
  • si text_to_find se puede encontrar dentro del paragraph actualizado, entonces para cada triple
  • actualice text_to_find hot word con su versión similar a un enlace.

Aquí está el código:

 import re text_to_find = 'Lorem Ipsum has been the industry&apos;s standard dummy text ever since the 1500s, ' paragraph = 'Lorem [Ipsum](lalala) has been the industry&apos;s [standard](www.meh.com) dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to [make](hello?) a type [specimen](yes) book.' # generate triple (<link_match>, <word_match>, <start_index>) lst = [(m.group(0), m.group(1), m.start(0)) for m in re.finditer(r'\[([^\]]+)\]\([^)"]+\)', paragraph)] # update paragraph and triple subtract = 0 for idx, (link, match, i) in enumerate(lst): paragraph = paragraph.replace(link, match, 1) lst[idx] = (link, match, i-1+subtract) subtract += len(match) - len(link) # update text with links if not paragraph.find(text_to_find)+1: print('no reference') else: for (link, match, i) in lst[::-1]: if i < len(text_to_find): text_to_find = text_to_find[:i+1] + link + text_to_find[i+1+len(match):] print(text_to_find)

Si tiene más de un text_to_find en diferentes párrafos, puede almacenar la conversión de párrafo y la traducción de text_to_find en dos funciones diferentes y llamarlas dentro de un ciclo sobre párrafos y textos para que se encuentren en consecuencia.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La siguiente es una solución aproximada y lista. No asume caracteres especiales de expresión regular en textToFind (si los hay, se pueden escapar simplemente).

Se crea una expresión regular a partir de textToFind donde cada palabra tiene la opción de ser el texto del enlace de un enlace de descuento, por ejemplo, Ipsum se convierte en (?:Ipsum|\[Ipsum\]\([^)"]+\)) en la expresión regular cuerda.

 const textToFind = 'Lorem Ipsum has been the industry&apos;s standard dummy text ever since the 1500s, '; const paragraph = 'Lorem Ipsum has been the industry&apos;s [standard](wwww.meh.com) dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.' const regexString = textToFind.replace(/\w+/g, '(?:$&|\\[$&\\]\\([^)"]+\\))'); const match = paragraph.match(new RegExp(regexString, 'g')); console.log(match);

Si explica cómo se usa textToFind para calcular el ancho de cada línea, es posible que se presente una solución más sólida.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda