oXygen中的正则表达式锚点使用XPath查找/替换对话框

时间:2014-06-11 17:09:03

标签: xml regex xpath oxygenxml

有没有办法在oXygen查找/替换对话框中使用XPath约束锚定正则表达式,以便它匹配匹配的XPath字符串的开头?到目前为止," ^"当我尝试使用XPath对话框时,将无法匹配任何内容。

例如,给出输入文件

<fruit>
    <apple>Graham</apple>
</fruit>

正则表达式

^Graham

使用XPath     fruit/apple

不会选择任何内容。如果我没有在XPath中输入任何内容,^会正确选择行的开头。 &#34;正则表达式&#34;框被检查,我已经测试了我的XPath。如果我从我的正则表达式中取出锚点,它将在字符串上正确匹配。我唯一能做的就是锚。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

在Oxygen的“查找/替换”窗口中,^$与文件中的行相关。即使指定了XPath过滤器,它们也不会匹配XPath元素的开头或结尾。

^匹配字符串中第一个字符前的位置。 ^无法在&#34; Graham&#34;之前的位置匹配因为它前面没有换行符 - 无论是否有XPath,前面的字符都不是换行符。锚本身与每行的开头匹配,因为这些实例中的前一个字符是换行符。

\A只在字符串的开头匹配;但是,XPath不支持\A\Z。通常,由于XPath对类似Perl的正则表达式的不合规支持,在Oxygen的查找/替换对话框中使用XPath时,您将被限制为插入符号;但是,Oxygen中的查找/替换正则表达式支持是完整的Java正则表达式集,与XPath正则表达式不同;因此,您可以使用\A\Z,而不仅仅是^$

在Oxygen中,如果想要匹配XML元素的开头,则使用查找/替换相关元素,例如<apple[^>]+>Graham或更好,只需使用XPath字段查找//apple[matches(., '^Graham')],因为在XPath语法中^$相对于字符串的开头/结尾而不是行。

半文档撒克逊语扩展之一是在使用!标志时允许在XPath中使用Java正则表达式构造。例如,启用\b(字边界)和正/负前瞻。