0

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

0000.html - 8675.html

H0000 - H8675

并将它们包含在整体搜索中。搜索失败,因为下一页仅在此处、此处和此处有轻微变化。

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

有没有这方面经验的人可以伸出援助之手?


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

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

但是非常感谢您的帮助!

4

1 回答 1

1

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

这是匹配范围 from 0000.htmlto的一种方法8675.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.htmlor B8675.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。

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

于 2015-06-29T01:53:01.210 回答