简体   繁体   English

在Eclipse中使用正则表达式在xml文件中查找查询

[英]Looking for query in xml file using regex in eclipse

Using Regex Eclipse Search feature, I need to find queries written with IBATIS e stored in XML files. 使用Regex Eclipse搜索功能,我需要查找用IBATIS e编写的,存储在XML文件中的查询。

I tried build by myself the regex string.. but without successful. 我试图自己建立正则表达式字符串..但没有成功。

In some file XML there are queries. 在某些文件XML中,存在查询。 An example of a file : 文件示例:

<sqlMap namespace="Crediti">

 <select id="quotaVarPost50" parameterClass="qdb" resultClass="qdb">
      SELECT QDD_MAX.*
      FROM  ${schema}.QUOTEDATA QDD_MAX,
            ${schema}.ESERCIZIO ESE
      WHERE QDD_MAX.DATA_REGISTRAZIONE &gt;= #DATA_REGISTRAZIONE#
        AND QDD_MAX.TIPO_QUOTA = #TIPO_QUOTA#
        AND QDD_MAX.ANNO_RIF = #ANNO_RIF#
        AND QDD_MAX.SCO_TIPO_VARIAZIONE &lt;&gt; '04'
</select>


 <select id="allegatoCreditoDaRegDeb" parameterClass="RegistroDebitori" resultClass="stringa">
        SELECT PADRE.DESCRIZIONE
        FROM ${schema}.DECODIFICA_RELAZIONI REL
            INNER JOIN ${schema}.DECODIFICA PADRE
            ON (REL.TIPO_CODIFICA_PADRE = PADRE.TIPO_CODIFICA
                AND REL.CODICE_PADRE = PADRE.CODICE)
            INNER JOIN ${schema}.DECODIFICA FIGLIO
            ON (REL.TIPO_CODIFICA_FIGLIO = FIGLIO.TIPO_CODIFICA
                AND REL.CODICE_FIGLIO = FIGLIO.CODICE)
        WHERE REL.TIPO_RELAZIONE = 'T89'
            AND REL.CODICE_RELAZIONE = 'RP88'
            AND SYSDATE BETWEEN REL.DATA_INIZIO_VAL AND REL.DATA_FINE_VAL
            AND REL.TIPO_CODIFICA_FIGLIO = #COD_SOTTOINSIEME_ORIGINE#
            AND REL.CODICE_FIGLIO = #SCO_SOTTOINSIEME_ORIGINE#
    </select>

<delete id="deleteDomanda" parameterClass="hashmap" >
        DELETE ${schema}.VOCI_DOMANDA 
        WHERE TIPO_BILANCIO = #TIPO_BILANCIO#
            AND ANNO_ES = #ANNO_ES#
            AND PROGR_DEBITO = #PROGR_DEBITO#
            AND ID_VOCE_DOMANDA_DEBITO = #ID_VOCE_DOMANDA_DEBITO#
</delete>

</sqlMap>

This is an example, the real file has more and more and more statement (select, delete, update , ...) 这是一个示例,实际文件中的语句越来越多(选择,删除,更新,...)

I would like have a regex string (accepted by eclipse feature -> Search - File - Regular expression) that allow me to find the statement of a query that contains some words. 我想要一个正则表达式字符串(被Eclipse功能->搜索-文件-正则表达式接受),它使我能够找到包含一些单词的查询语句。

For example i looking for a query who containes the words 'TDECODIFICA_RELAZIONI' and 'TDECODIFICA'. 例如,我正在查找包含单词“ TDECODIFICA_RELAZIONI”和“ TDECODIFICA”的查询。 Eclipse should find the match for the statemend that has id="allegatoCreditoDaRegDeb" (present in the example above) Eclipse应该找到具有id =“ allegatoCreditoDaRegDeb”的状态表的匹配项(在上面的示例中显示)

here an image of search toolbar 这是搜索工具栏的图像

@howlger Answers with <select[^>]*>([^<]*\\b(TDECODIFICA_RELAZIONI|TDECODIFICA)\\b){2} This regex string allow me to restrict a lot the researching. @howlger用<select[^>]*>([^<]*\\b(TDECODIFICA_RELAZIONI|TDECODIFICA)\\b){2}这个正则表达式字符串使我可以限制很多研究。 It will match a select statement when found at least 2 result (even if the matchies could be even 2 time of one of the same word). 当找到至少2个结果时,它将与select语句匹配(即使匹配结果可能是同一单词之一的2倍)。

Thanks @howlger 谢谢@howlger

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM