【发布时间】:2012-11-04 15:26:05
【问题描述】:
我有一个格式如下的文件
AAA
BBB
联赛="NFL"
联赛="CFB"
联盟="NBA"
联赛="CBK"
CCC
DDD
我只想列出包含 League 但不包含 NFL 或 NBA 的行。所以从上面,我只想:
联赛="CFB"
联赛="CBK"
提前谢谢你。
【问题讨论】:
标签: regex-negation
我有一个格式如下的文件
AAA
BBB
联赛="NFL"
联赛="CFB"
联盟="NBA"
联赛="CBK"
CCC
DDD
我只想列出包含 League 但不包含 NFL 或 NBA 的行。所以从上面,我只想:
联赛="CFB"
联赛="CBK"
提前谢谢你。
【问题讨论】:
标签: regex-negation
这样的事情应该可以工作:
/League="[^(NFL)|(NBA)]"/
【讨论】:
/g并匹配更多时间.*
你必须使用正则表达式吗? (是为了作业吗?)
如果不是,你可以读入文件并像这样过滤它:
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 的所有字符串。
在一行上使用正则表达式匹配会很丑陋。
【讨论】:
最后两个将被解释为 /League="[^NFLBA]"/
【讨论】: