代码之家  ›  专栏  ›  技术社区  ›  chama

带=和a的正则表达式;

  •  13
  • chama  · 技术社区  · 15 年前

    我正在尝试使用正则表达式查找以等号开头的所有子字符串( = )以分号结尾( ; )中间有任意数量的字符。应该是这样的 =*;

    由于某种原因,等号没有注册。是否有某种转义符会使regex注意到我的等号?

    我在Java中工作,如果这对这个问题有任何影响的话。

    5 回复  |  直到 6 年前
        1
  •  19
  •   jjnguy Julien Chastang    15 年前

    这可能是你想要的。需要指定要应用星号的字符集或通配符。

    "=([^;]*);"
    

    你也可以使用不情愿的量词:

    "=(.*?);"
    

    使用括号,您现在有了组。我相信第一组是整个比赛,而且 group[1] 在括号中找到的组。

    代码可能看起来像:

    Regex r = new Regex("=([^;]*);");
    Match m = r.Match(yourData);
    while (m.Success) {
        string match = m.Groups[1];
        // match should be the text between the '=' and the ';'.
    }
    
        2
  •  6
  •   Jon Skeet    15 年前

    这将查找“任意数量的=符号,包括0”

    =*;
    

    如果需要“=后面跟任意数量的其他字符”

    =.*;
    

    但是,这将是一种贪婪的匹配——如果您希望进行懒惰的匹配(以便在找到下一个分号时停止一个组),您可能需要:

    =.*?;
    
        3
  •  1
  •   Marcel Jackwerth    15 年前

    你提供的正则表达式将匹配 ; , ===; ================; .怎么样 =.*; (或) =.*?; 如果需要非贪婪的?

        4
  •  1
  •   crunchdog    15 年前

    在Java中学习ReGEXP的一个很好的来源: sun's book about regexp

        5
  •  1
  •   Martin Milan    15 年前

    比如=*;