cleo-凡事从积极的态度做起

学习,学习,学习 BI/biztalk/infopath/sharepoint,呵呵。 学习没有止境。。。

导航

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

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

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

 static void Main(string[] args)
        
{
            String inputString 
= "{/root/ID}:{/root/Name}";  //使用{}为转义
           
            Regex r;
            Match m;

            r 
= new Regex("(?:{(?<1>[^}]*)})",
                RegexOptions.IgnoreCase 
| RegexOptions.Compiled);
            
for (m = r.Match(inputString); m.Success; m = m.NextMatch())
            
{
                Console.WriteLine(
"Found matchs : " + m.Groups[1+ " at "
                    
+ m.Groups[1].Index);
            }

        }



运行结果如下:




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

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

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

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

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


posted on 2006-03-31 15:17  无为而为-凡事从积极的态度做起  阅读(2893)  评论(2编辑  收藏  举报