【问题标题】:How to create a regular expression with incremental numbers and fixed letters for EditPad如何为 EditPad 创建带有递增数字和固定字母的正则表达式
【发布时间】:2015-06-29 00:56:18
【问题描述】:

我需要搜索包含这些(不同)值的文本:

0000.html - 8675.html

H0000 - H8675

并将它们包含在整体搜索中。搜索失败是因为下一页有细微的变化只有这里、这里和这里

我被告知答案是用正则表达式替换文本中这些攀登数字所在的位置。我尝试使用不同的示例,但我认为句点可能导致它们失败。我可能完全偏离了轨道,因为我不熟悉这段代码。

有这方面经验的人可以帮忙吗?


感谢 zx81 - 我还没有能够使任何这些工作 - 我提取了一段文本并在 xxxx.html 中使用一个实例搜索(相同的文本),它吐回它不是一场比赛。

我通常会购买这个 RexexMagic,但是在使用了几个小时应该可以工作的示例之后,我已经失去了希望这将永远适用于我正在尝试做的事情。

但非常感谢您的帮助!

【问题讨论】:

  • 对于数字范围,如果您不知道正则表达式,我建议您使用正则表达式范围生成器。有一个免费的here,但由于您使用的是 JGSoft 产品,您可能想看看 Jan 的 RegexMagic,它完全符合您的要求。

标签: regex editpad


【解决方案1】:

在第三个表达式中,我们将一次性匹配您的两个范围。首先,这里是各个范围的一些表达式。

这是匹配从0000.html8675.html 的范围的一种方法:

\b(?=\d{4}\.)0*(?:867[0-5]|86[0-6][0-9]|8[0-5][0-9]{2}|[1-7][0-9]{3}|[1-9][0-9]{1,2}|[0-9])\.html

说明

  • (?:867[0-5]|86[0-6][0-9]|8[0-5][0-9]{2}|[1-7][0-9]{3}|[1-9][0-9]{1,2}|[0-9]) 模式匹配从 0 到 8675 的数字
  • 我在前面添加了0* 以匹配可选的零
  • 我在前面添加了(?=\d{4}\.),以确保我们在点前正好有四位数字
  • 我在前面添加了一个词边界\b,以确保我们的字符串不会嵌入到更长的字符串中,例如18675.htmlB8675.html

对于第二个,在前面添加一个H

\bH(?=\d{4}\.)0*(?:867[0-5]|86[0-6][0-9]|8[0-5][0-9]{2}|[1-7][0-9]{3}|[1-9][0-9]{1,2}|[0-9])\.html

要一石两死,请将H 设为可选:

\bH?(?=\d{4}\.)0*(?:867[0-5]|86[0-6][0-9]|8[0-5][0-9]{2}|[1-7][0-9]{3}|[1-9][0-9]{1,2}|[0-9])\.html

实践中

对于这类表达式,除非您对正则表达式有经验,否则我建议您使用范围生成器。 (如果您在正则表达式方面有经验,那么您已经知道这些范围非常容易出错,因此您最好使用范围生成器。)

网上有一些免费的(我不完全信任),但由于您使用 JGSoft 的 EditPad,您可能想看看他的 RegexMagic。

即便如此,您可能仍需要调整生成的表达式以使其符合您的规范。

【讨论】:

    猜你喜欢
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多