Java RegEx 检查行的第 8 个字符是否为 A

标签 java regex

我有一个包含数千条记录的文件,我需要根据每行的第 8 个字符过滤它们。在我的例子中,如果第 8 个字符是 [a 或 A],我想提取该行并保存到一个新文件中。

我刚刚将一个简单的 Java 应用程序与 3 个项目 2 放在一起,其中有我想要的数据“第一个和第三个”,我正在打印到控制台,但我的匹配器不工作。

我的代码示例:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidateDemo {
   public static void main(String[] args) {
      String pattern = "^.{7}([aA]{1})";

      // Create a Pattern object
      Pattern p = Pattern.compile(pattern);

      List<String> input = new ArrayList<String>();
      input.add("CARHALAALondon                     GB                         W");
      input.add("T(U   LRFonhai                     CN                         E");
      input.add("A$F   LAMuguni                     VE                         E");

      for (String ssn : input) {
         System.out.println(p + " -> " +ssn);
         if (p.matcher(ssn).matches()){
            System.out.println("Match: " + ssn);
         }

      }
  }
}

输出:

^.{7}([aA]{1}) -> CARHALAALondon                     GB  United Kingdom                       W
^.{7}([aA]{1}) -> T(U   LRFonhai                     CN  China                                E
^.{7}([aA]{1}) -> A$F   LAMuguni                     VE  Venezuela                            E

如您所见,它只打印出第一个 SYSO,任何人都知道我如何才能实现我想要做的事情。

谢谢

G

最佳答案

你快到了 - Matcher::matches attempts to match the whole string .

这个模式应该做你想做的:

String pattern = "^.{7}[aA].*";

或者(更简单、更高效):

for (String ssn : input) {
   char eighth = ssn.charAt(7);
   if (eighth == 'a' || eighth == 'A') {
      System.out.println("Match: " + ssn);
   }
}    

关于Java RegEx 检查行的第 8 个字符是否为 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34884653/

相关文章:

java - 使用微调器更改值

java - 从 List/ArrayList 获取最后三个元素?

java - 我正在寻找一些帮助,以使用 Play 框架将 Polymer 与服务器端 Scala/java 结合使用

javascript - 'simple' 正则表达式的负后视工作

javascript - 否定前瞻正则表达式

java - 使用@configuration注释的类访问属性

java - 如何确保两个线程访问相同的资源并使它们线程安全?

javascript - 如何以编程方式让字符串的所有 unicode 实体自行解析?

regex - MAC 地址的正则表达式是什么?

java - 如何在 Pattern.compile ("\\R").splitAsStream(input) 中包含尾随空字符串?