首页 > 解决方案 > 如何在正则表达式中匹配以下模式?

问题描述

我怎样才能匹配给定段落中的模式any number followed by h or t or l1h , 126h or 1268h但不是 1.1h 12.6h or 12.68h

我正在编写一个可以替换1hto1001268hto的应用程序,126800而不是输入00一个人可以简单地放置h一个数字,但由于一些错误,它也匹配十进制数字。

我写的模式是(\d+)(h|t|l)

标签: regexautohotkey

解决方案


(?<!\S)如果支持正向后视或锚点以匹配整行,则可以在左侧使用空白边界。

交替可以写成一个字符类[htl]

(?<!\S)(\d+)([htl])
  • (?<!\S)正面向后看,断言左边的不是非空白字符
  • (\d+)捕获组 1,匹配 1+ 位
  • ([htl])捕获组 2,匹配任一ht orl`

正则表达式演示

使用锚点匹配整行

^(\d+)([htl])$

正则表达式演示

如果没有环顾四周,您可以匹配空白字符或字符串的开头,(?:\s|^)例如:

(?:\s|^)(\d+)([htl])

正则表达式演示


推荐阅读