一个简单的正则表达式应用,正则匹配选出XPath表达式

需求是:
一个字符串,中间包含XPath,XPath 使用“{”和“}” ,即{XPath1}xxx{XPath2}.
需要取出XPath ,并且在一个XML文件中间计算XPath表达式的值。

显然需要用到正则表达式:
代码如下:

None.gif   static   void  Main( string [] args)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            String inputString 
= "{/root/ID}:{/root/Name}";  //使用{}为转义
InBlock.gif
           
InBlock.gif            Regex r;
InBlock.gif            Match m;
InBlock.gif
InBlock.gif            r 
= new Regex("(?:{(?<1>[^}]*)})",
InBlock.gif                RegexOptions.IgnoreCase 
| RegexOptions.Compiled);
InBlock.gif            
for (m = r.Match(inputString); m.Success; m = m.NextMatch())
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                Console.WriteLine(
"Found matchs : " + m.Groups[1+ " at "
InBlock.gif                    
+ m.Groups[1].Index);
ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }



运行结果如下:

Regex1.JPG


有待改进的地方:
这是一个使用单个字符{和}来分隔的,如果要是使用多个字符,比如<XPath>/root/ID</XPath>,不知道该如何写?

我看到这里好像有不少正则表达式的高手,不妨教教我,呵呵。

为了满足需求,
我们后来使用了正则表达式另外一个好用的功能:Split

只要使用这个就可以把字符串拆成一个字符数组:
string[] sXPath = r.Split(inputString);

并且,所有的偶数位置的就是匹配出来的,就算2个表达式之间没有任何字符,也会在中间插入一个空的字符占位,这样,只要计算偶数位置的XPath就好了。
看看数组里面的内容:

Regex_Split.JPG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值