2012-04-19 14 views
7

Usando Solr 3.5.0 y en mi schema.xml estoy usando el siguiente para marcar el final de las oraciones y sustituir la puntuacion final con un token simbólica:Cómo escapar el carácter "<" en expresiones regulares en Solr schema.xml?

<charFilter class="solr.PatternReplaceCharFilterFactory" 
pattern="(?<=[^.!?\\s][^.!?]*(?:[.!?](?![']?\s|$)[^.!?]*)*)[.!?]+(?=\\s|$)" 
replacement=" monkeysentence"/> 

No estoy seguro de si esa voluntad incluso trabajo para lo que quiero, pero primero necesito resolver el problema de escapar del carácter '<' en el primero '? < = 'lookbehind.

me sale el siguiente error:

org.xml.sax.SAXParseException: The value of attribute "pattern" 
associated with an element type "null" must not contain the '<' character. 

He intentado usar un '\' como en:

pattern="(?\<=[^.!?\\s][^.!?]*(?:[.!?](?![']?\s|$)[^.!?]*)*)[.!?]+(?=\\s|$)" 

pero me da el mismo error.

Respuesta

20

Como se trata de un archivo XML, tendrá que utilizar un escape XML para codificar <, a saber &lt; (También puede ser necesario para codificar > como &gt;, " como &quot;, y & como &amp;)

+0

Eso funciona perfectamente. Gracias. – Ramsel

Cuestiones relacionadas