代码之家  ›  专栏  ›  技术社区  ›  Somnath Musib Ray

匹配字符串中固定子字符串的正则表达式

  •  1
  • Somnath Musib Ray  · 技术社区  · 6 年前

    我试图编写一个正则表达式来验证字符串中固定位置是否存在特定数字。

    String: 109300300330066611111111100000000017000656052086116020170111Name 1
    Number to find:  111111111 (Staring from position 17)
    

    我已经编写了以下正则表达式:

    ^.{16}(?<Ones>111111111)(.*)
    

    1. 不管前16个字符是什么
    2. Named Capturing Group 抓住特定的词
    3. 让其他的角色成为他们的样子

    我是regex新手,上面的方法有什么问题吗? 能用其他更好的方法吗?

    我正在使用Java8。

    2 回复  |  直到 6 年前
        1
  •  2
  •   CertainPerformance    6 年前

    如果没有更多的细节说明你为什么要这么做,我只能看到一个可能的改进。您在字符串开头重复任何字符16次,而不是写出16个 . 1 学生:

    ^.{16}(?<Ones>1{9})(.*)
    

    否则,字符串 1个

        2
  •  2
  •   Ali    6 年前

    如果你想硬编码,你知道开始的位置,你只是想知道它是否存在,使用regex似乎是不必要的。您可以使用:

    String s = "109300300330066611111111100000000017000656052086116020170111Name 1";
    if (s.indexOf("111111111").equals(16) doSomething();
    

    没有regex的另一种可能的解决方案:

    if(s.substring(16,25).equals("111111111") doSomething();