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

标签 java regex

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

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

我写了下面的正则表达式:

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

我的理解是:

  1. 让前 16 个字符随便写
  2. 使用Named Capturing Group来抓取特定的单词
  3. 让其余的角色随心所欲

我是正则表达式的新手,上述方法有什么问题吗? 可以用其他/更好的方式完成吗?

我正在使用 Java 8。

最佳答案

如果没有更多关于您为什么要做您正在做的事情的详细信息,我只能看到一个可能的改进。您在字符串的开头重复了任何字符 16 次,而不是写出 16 个 .,这很好且可读,但是,对重复的 执行相同的操作会很好1:

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

否则,如果编码人员不手动计算正则表达式中有多少,则很难理解 1 的字符串。

关于java - 正则表达式匹配字符串中的固定子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51869333/

相关文章:

java - 如何仅在当前类(class)中查找标签?

java.lang.NoClassDefFoundError 仅在特定条件下

python - 调整 Python Regex 以在 findall 结果中不包含单个数字

javascript - javascript 中的正则表达式循环和逻辑

java - 什么事件会使等待线程执行另一个线程已经运行的同步方法?

java - 使用 Calendar 类获取 Java 中特定日期的星期几作为字符串

java - 部署到 Google App Engine 时,Spring Boot 应用程序无法连接到 Google Cloud SQL (PostgreSQL)

c++ - 如何在不完全 boost 的情况下使用 boost.xpressive ?

C# 正则表达式可选命名组

javascript - 匹配一个单词,除非它前面有等号?