正则表达式 - 仅匹配第一次出现并忽略每秒

时间:2018-02-08 07:18:36

标签: regex

我有一个来自文本文件的行,我想只匹配第一次出现的数字而忽略第二行。 字符串如下所示:

Dauerstufe              1 a             1 a             2 a             2 a             3 a             3 a             5 a             5 a            10 a            10 a            20 a            20 a            30 a            30 a            50 a            50 a           100 a           100 a

所以我只想匹配:1 2 3 5 10 20 30 50 100或用户可能想要输入的任何其他号码。 使用[0-9]+非常容易匹配数字。 但是我如何让它只匹配第一个呢?

提前感谢您的帮助!

编辑:我忘了说正则表达式将在vba中使用。

4 个答案:

答案 0 :(得分:0)

最简单的方法是使用哈希表或关联数组。

使用匹配的数字作为密钥。

下面的PHP示例:

$myarray[$x] = "";

稍后,只需循环数组的键。因为如果密钥存在它只会覆盖,你不必担心删除重复项。

答案 1 :(得分:0)

使用此(.*?)(?'first'\d{1,3})(.+?)(\k{first})( a)

Online demo

答案 2 :(得分:0)

要获取您要查找的值,您还可以使用否定前瞻选择最后一次出现。

\b(\d+)\b(?!.*\1\b)

答案 3 :(得分:0)

您可以在RegExp对象上使用/[0-9]+/ regexp并设置Global标志。

Set myRegExp = New RegExp
myRegExp.Global = True
myRegExp.Pattern = "[0-9]+"

详情请见:How to Use the VBScript RegExp Object