正则表达式仅在特定字符之后匹配字符串

Regex match strings only after certain character

我想删除所有号码,但只能在 |

之后
blah, 1. retain 3. dont alter..blah | blah 1. remove balh.. 19. altered

在我应用正则表达式之后,字符串应该是

blah, 1. retain 3. dont alter..blah | blah remove balh..  altered

当我使用此正则表达式 [0-9]+\. 替换时,它甚至在 | 之前匹配所有“带点的数字”,当我使用正则表达式 | [0-9]+\. 时,它只选择第一个数字和点即 1.,在 |

之后

您可以使用否定前瞻并使用 negated character class 排除换行符或 |:

断言右侧不是管道字符
\d+\.(?![^\r\n|]*\|)

说明

  • \d+\. 匹配 1+ 个数字和一个点
  • (?!负前瞻,断言不向右
    • [^\r\n|]*\| 匹配除换行符或 |
    • 以外的可选字符
  • ) 关闭前瞻

看到一个regex demo


另一种选择是使用正先行断言在字符串末尾之前不是右侧的管道字符:

\d+\.(?=[^\r\n|]*$)

说明

  • \d+\. 匹配 1+ 个数字和一个点
  • (?=正向前看,向右断言
    • [^\r\n|]*$ 匹配除换行符或 | 以外的可选字符,直到字符串结尾 $
  • ) 关闭前瞻

看到一个regex demo.