匹配定界符后小于9的行

Match the line after delimiter and shorter than 9

我和正则表达式永远相处不来 我每天都会收到主管的电子邮件 包含大约 1000+ 行需要排序 就像:

名称|代码

目标是将它们分成 2 个文件

示例:

我在做什么

我照顾|特点 我删除整行: 如果代码只包含数字 and or 只包含字母 and or 小于 9

示例列表变为:

加里·库珀|abc123h1n1

这个步骤我每天都做,有时我会得到 2000 行:/真正的痛苦

我曾经在记事本++中使用正则表达式 但我找不到这个的匹配项 我在 php 也不是很糟糕 请帮助我

更新 01: 正则表达式找到 (?i)^[^|]\|\h[a-z\d]{0,8}$\R? 当前问题: 编写一个小的 php 脚本或者可重复使用的 类

  1. 接口:

从文本框(html 表单)或 txt 文件

提交数据
  1. 处理:

与 txt 文件中可下载的正则表达式匹配的行。 文件中的其他人

  1. 输出:

2 个文件链接

提前感谢大家的帮助

如果你只是使用与 .* 匹配的贪心点,你不会检查长度。它可以用限制量词来检查。要仅匹配 0 到 8 个符号,您可以使用 {0,8}。除了 | 之外的所有字符都可以与 [^|]* 否定字符 class.

匹配

使用

(?i)^[^|]*\|\h*[a-z\d]{0,8}$\R?

参见regex demo(注意在 Notepad++ regex-based 搜索和替换中默认使用 gm 标志)。

解释:

  • ^ - 行首
  • [^|]* - 竖线以外的零个或多个符号
  • \| - 文字管道符号
  • \h* - 零个或多个水平空格
  • [a-z\d]{0,8} - 字母 a 到 z 和 A 到 Z(由于 (?i) 不区分大小写的修饰符)或数字,出现 0 到 8 次
  • $ - 行尾和
  • \R? - 一个或零(可选)换行符。