regex - 如何捕获每行都匹配的多行字符串?
问题描述
我有一个多行文本字段,需要测试每行是否与模式匹配。该字段可能如下所示:
1xABCD
9xDEFGHIJK
7xAJDKSLD
2xA
模式是这样的:\dx\w.*
行数从 1 到 X。
我正在尝试^\d+x\w.*${1,}
或 \d+x\w.*\r\n{1,}
谢谢
解决方案
您可以使用
^\d+x\w+(?:\r?\n\d+x\w+)*$
细节
^
- 字符串的开始\d+x\w+
- 1+ 个数字,x
然后是 1+ 个单词字符(字母、数字或_
)(?:\r?\n\d+x\w+)*
(?:...)
-匹配 0 次或更多 (*
) 次出现的 非捕获组 ( ):\r?\n
- 一个可选的 CR 和一个 LF 符号\d+x\w+
- 1+ 个数字,x
然后是 1+ 个单词字符(字母、数字或_
)
$
- 字符串结束。
请参阅正则表达式演示(注意粘贴在 regex101.com 中的文本只有 LF 行结尾)。
推荐阅读
- scala - 从具有键值对的列中获取部分值并将其分配给 Spark Dataframe 中的新列
- java - 如何使用java删除包含字符串的单词表的行
- c# - 如何知道我是否单击了 CellMouseDownEvent 中的单元格
- html - 检查电子邮件签名上的更改
- sql - 在oracle sql中将一年中的一周转换为日期
- javascript - 为什么Javascript正确打印数组但是当我尝试在数组中指定一个明显存在的键时,它说它是未定义的?
- windows - Scala Play openapi 生成器项目缺少导入
- powershell - Powershell 2.0 参数绑定异常
- c# - 在 linq 查询中选择 max 或重写为方法链语法
- c - 我可以在 C 中使用 sigaction 的标志 siginfo 和 SIGCHLD 来获得终止进程的信号 int 常量(如 SIGINT 或 SIGKILL)吗?