如何提取字符串末尾的非数字字符和数字字符?

问题描述

我有一个具有以下结构的字符串:

数字字数字。

例如:

2029 AG.IZTAPALAPA 2

我想提取间的单词,并在字符串的末尾提取数字。

我要提取同一捕获组中的AG.IZTAPALAPA 2来提取

AG.IZTAPALAPA 2

我设法将它们捕获为单独的捕获组,而不是单个捕获组:

var date = new Date('2020/09/21 9:33');
var time = 23 * 1000;  // in miliseconds
var result = new Date(date.getTime() + time);

谢谢您的帮助!

解决方法

Yo可以对示例字符串使用单个捕获组,以匹配由大写字符AZ组成的单个“单词”,中间带有一个可选点,该点不能在开头或结尾,后跟1个或多个数字。

\b\d+ ([A-Z]+(?:\.[A-Z]+)* \d+)\b

说明

  • \b单词边界
  • \d+
  • (捕获第1组
    • [A-Z]+匹配1个以上的大写字符A-Z
    • (?:\.[A-Z]+)* \d+重复0+次以匹配一个点和一个字符A-Z,然后匹配1+个数字
  • )关闭第1组
  • \b单词边界

Regex demo

或者您可以使图案更宽一些,以匹配点或字字符

\b\d+ ([\w.]+(?: [\w.]+)* \d+)\b

Regex demo

,

您还可以尝试以下操作:'\ d + \ s(\ D +)\ s(\ d +)'然后分别提取组值。

Python示例:

data = "2029 AG.IZTAPALAPA 2"
output = re.search("\d+\s(\D+)\s(\d+)",data)
output.group(1)
'AG.IZTAPALAPA'
output.group(2)
'2'