【问题标题】:Regular Expression - Negating strings正则表达式 - 否定字符串
【发布时间】:2012-11-04 15:26:05
【问题描述】:

我有一个格式如下的文件

AAA
BBB
联赛="NFL"
联赛="CFB"
联盟="NBA"
联赛="CBK"
CCC
DDD

我只想列出包含 League 但不包含 NFL 或 NBA 的行。所以从上面,我只想:

联赛="CFB"
联赛="CBK"

提前谢谢你。

【问题讨论】:

    标签: regex-negation


    【解决方案1】:

    这样的事情应该可以工作:

    /League="[^(NFL)|(NBA)]"/
    

    【讨论】:

    • 它应该是全局的,启用迭代匹配/g并匹配更多时间.*
    • 谢谢你的例子,但我认为这个解决方案之所以有效,只是因为它消除了以 N 开头的运动,因为当我用 CBK 替换 NBA 时,它不起作用。
    【解决方案2】:

    你必须使用正则表达式吗? (是为了作业吗?)

    如果不是,你可以读入文件并像这样过滤它:

    BufferedReader in = new BufferedReader(new FileReader("filePath"));
    
    String line = in.readLine();
    List<String> myList = newArrayList<String>();
    
    while(line != null){
        if ((line.startsWith("League")) && 
            (!line.contains("NFL")) && 
            (!line.contains("NBA"))){
    
               myList.add(line)
    
            }
     }
    

    填充一个字符串列表,其中包含文件中以 League 开头但不包含 NFL 或 NBA 的所有字符串。

    在一行上使用正则表达式匹配会很丑陋。

    【讨论】:

    • 谢谢你的例子。但是,不,它不适用于家庭作业,我需要一个正则表达式。
    【解决方案3】:

    最后两个将被解释为 /League="[^NFLBA]"/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2010-11-12
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多