0

在这个例子中

BIOLOGIQUES                                                             3433     130906 / 3842

选择 3433 我使用

BIOLOGIQUES\s+(\d+)

但是我应该做些什么改变来选择最后一个 3842 呢?

4

2 回答 2

1

你可以使用这样的模式:

BIOLOGIQUES\s+(\d+)\s+(\d+)\s+/\s+(\d+)

这将匹配:

  • 字面意思BIOLOGIQUES
  • 一个或多个空白字符
  • 一个或多个数字,在第 1 组中捕获
  • 一个或多个空白字符
  • 一个或多个数字,在第 2 组中捕获
  • 一个或多个空白字符
  • 字面意思/
  • 一个或多个空白字符
  • 一个或多个数字,在第 3 组中捕获

给定您的示例字符串,它将分别在组 1、2 和 3 中捕获 3433、130906 和 3842。不要忘记,许多正则表达式引擎使用正斜杠来分隔正则表达式文字(例如 JavaScript),因此您可能需要转义/

/BIOLOGIQUES\s+(\d+)\s+(\d+)\s+\/\s+(\d+)/

当然,如果您只想/在字符串中找到 ' 后面的最后一个数字,那就容易多了。这可以解决问题:

/.*?(\d+)\D*$

这将匹配

  • 字面意思/
  • 零个或多个任意字符(非贪婪)
  • 一个或多个数字,在第 1 组中捕获
  • 零个或多个非数字字符
  • 字符串的结尾(或多行模式下的行)
于 2013-09-15T03:14:01.813 回答
1

使用贪心量词

BIOLOGIQUES.*/.*\s(\d+)
于 2013-09-15T03:14:54.923 回答