regex - 仅匹配以某个字母开头然后包含 5 个或更多非空白字符的单词
问题描述
我试过遵循正则表达式。
(?i)(^t|^d|^i|)\S{5}.*
- 无论起始字符如何,这都匹配任何字符串。(?i)^(t|d|i|)\S{5}.*
- 这仅匹配以字符“t”开头的那个(?i)[tdi]\S{5}.*
- 这看起来不错但无法使用 ^ 因为这只是否定。如果我^
在里面使用,(?i)[^tdi]\S{5}.*
那么它会匹配除以t
. 我想匹配txxxxx
但不匹配,xtxxxx
and 的情况也是i
如此d
。
什么是正确的正则表达式来实现它?
首先,字符串必须以指定的这些字符之一开头,然后必须遵循最少 5 个字符(无空格)字符,然后它可以有任何后面,即txxxxx.domain.local
,dxxxxx.domain.local
但同时它不应该与xtxxxx.domain.local
or匹配xdxxxx.domain.local
。
解决方案
一般来说,如果您需要匹配任何由字母、数字或下划线组成的单词,以特定字母开头,您可以使用
(?i)\b[tdi]\w*
它将匹配t
, T
, d
, D
,I
或i
在单词边界 ( \b
) 处,然后是任何 0 个或多个字母、数字或下划线。
您可以使用
(?i)(?<!\S)[tdi]\S{5,}
查看正则表达式演示
(?i)
- 不区分大小写的修饰符(?<!\S)
- 空格应该在比赛之前出现[tdi]
- 单词开头的三个字母之一\S{5,}
- 五个或更多非空白字符。
推荐阅读
- coq - 无法将变量绑定到包装的打开公式
- leaflet - 创建地图后更改 fadeAnimation 选项
- javascript - 我该如何解决这个“ajax 请求实体太大”
- node.js - 如何使用现有用户的 .id 和 mongoose 模型填充?
- php - Laravel 8:SQLSTATE [23000]:违反完整性约束:1048 列“标题”不能为空
- php - vscode自动完成无法正常工作和完成
- powershell - 尝试使用 Powershell 在 CSV 中获取所有团队及其所有者、成员和来宾
- sql - SQL 在每月聚合中查找最新的子状态条目
- java - 带有按钮的 Recyclerview 多视图项目
- makefile - Makefile 每次都重新链接