首页 > 解决方案 > 如何捕获每行都匹配的多行字符串?

问题描述

我有一个多行文本字段,需要测试每行是否与模式匹配。该字段可能如下所示:

1xABCD
9xDEFGHIJK
7xAJDKSLD
2xA

模式是这样的:\dx\w.*

行数从 1 到 X。

我正在尝试^\d+x\w.*${1,}\d+x\w.*\r\n{1,}

谢谢

标签: regex

解决方案


您可以使用

^\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 行结尾)。


推荐阅读