zoukankan      html  css  js  c++  java
  • 一个简单的正则表达式应用,正则匹配选出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就好了。
    看看数组里面的内容:


  • 相关阅读:
    P1474 货币系统 Money Systems(完全背包求填充方案数)
    Codeforces 877C Slava and tanks(思维)
    883H
    Codeforces 873B
    POJ 1733 Parity game(带权并查集)
    POJ 2387 Til the Cows Come Home(dijkstra裸题)
    POJ 1984 Navigation Nightmare(二维带权并查集)
    POJ 2912 Rochambeau(种类并查集+枚举)
    POJ 1456 Supermarket(贪心+并查集)
    POJ 2492 A Bug's Life(带权并查集)
  • 原文地址:https://www.cnblogs.com/cleo/p/363622.html
Copyright © 2011-2022 走看看