繁体   English   中英

用于查找前面没有回车/换行符的字符串模式实例的正则表达式

[英]Regex to find instances of a string pattern that is not preceded by a carriage return/line feed

我在 Notepad++ 中工作

在我正在处理的文件中,有一个字符串模式[0-9][0-9]-[0-9][0-9][0-9][0-9]| 每一行都应该以 pipe 开头,紧接着是 pipe。(注意:该模式在四位数字后最多可以包含三个大写字母。例如 00-1324A| 或 12-3456STR|)。

文件中存在该模式位于一行中间的实例,需要将其移至下一行。

例子:

00-1234REV|The quick brown fox jumped over the lazy dog|Test
11-6544|FooBar|text99-8656ST|This needs to be on the next line|some text
45-8737|Peter pipe picked a peck of pickled peppers|TEST2

正如我在示例中指出的那样,需要将99-8656ST移至下一行,结果如下:

00-1234REV|The quick brown fox jumped over the lazy dog|Test
11-6544|FooBar|text
99-8656ST|This needs to be on the next line|some text
45-8737|Peter pipe picked a peck of pickled peppers|TEST2

我目前有这个正则表达式: (?<=[^\d\r\n])\d{2}-\d{4}(?!\d)但这匹配中间的部分社会保险号一行:

123-45-6789

我的正则表达式将在45-6789上。

由于纯数字边界在这里不起作用,您可以在左侧添加一个数字 + 连字符的检查。 右边的边界很清楚,它是零到三个大写字母,后面跟着一个 pipe。

这意味着,您可以使用

(?<=[^\d\r\n])(?<!\d-)\d{2}-\d{4}(?=[A-Z]{0,3}\|)

请参阅正则表达式演示 详情

  • (?<=[^\d\r\n]) - 紧靠左边,必须有除数字、CR、LF 以外的字符
  • (?<!\d-) - 紧靠左侧,不应有数字 + -
  • \d{2}-\d{4} - 两位数字, - ,四位数字
  • (?=[AZ]{0,3}\|) - 紧接着是 0 到 3 个大写字母,然后是文字| 字符。

如果左侧边界可以是单个连字符或数字,则将(?<=[^\d\r\n])(?<!\d-)替换为(?<=[^\r\n\d-])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM