验证文件java

时间:2011-03-24 06:05:00

标签: java regex

我有一个平面文件,如:

A 10
S 20
W A 20 10
S A 45 10
S W S 20 20 20 30
W A S 22 50 20 55

我想确保它格式正确,(以空格“”分隔) 只允许使用正则表达式:

anyword* then " " then (word*|numbers*)*

其中*是任意数量的单词
但也有一个问题,

  • 如果只有一个单词或字符只有一个数字
  • 如果有2个单词或字符用“”分隔,则必须有2个数字用“”
  • 分隔
  • 如果有3个单词或字符用“”分隔,则必须有4个数字用“”
  • 分隔

我正在做这样的事情,但不知道在哪里加入行验证

try {
      input = new BufferedReader(new FileReader(new File(filename)));
      String line = null;
      while ((line = input.readLine()) != null) {
           String[] words = line.split(" ");
       if (words.length == 2) {

           }
     }  
 }

1 个答案:

答案 0 :(得分:1)

这个正则表达式应该这样做:

^[a-z]+ (?:\d+|[a-z]+(?: \d+ \d+| [a-z]+(?: \d+){4}))$

我尽量让它尽可能短,但也许可以将它浓缩一点。这应该在启用区分大小写的情况下使用,或者您应该将所有[a-z]更改为[a-zA-Z]

这是Rubular