一个字符串,中间包含XPath,XPath 使用“{”和“}” ,即{XPath1}xxx{XPath2}.
需要取出XPath ,并且在一个XML文件中间计算XPath表达式的值。
显然需要用到正则表达式:
代码如下:
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
运行结果如下:
有待改进的地方:
这是一个使用单个字符{和}来分隔的,如果要是使用多个字符,比如<XPath>/root/ID</XPath>,不知道该如何写?
我看到这里好像有不少正则表达式的高手,不妨教教我,呵呵。
为了满足需求,
我们后来使用了正则表达式另外一个好用的功能:Split
只要使用这个就可以把字符串拆成一个字符数组:
string[] sXPath = r.Split(inputString);
并且,所有的偶数位置的就是匹配出来的,就算2个表达式之间没有任何字符,也会在中间插入一个空的字符占位,这样,只要计算偶数位置的XPath就好了。
看看数组里面的内容: