正则表达式提取字符串中的第一系列数字和所有单词

2024-06-16 11:23:02 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试编写一个在python 2.7中执行以下操作的正则表达式:

FOO 288-B BAR <MATCH: "288-B BAR">

BURT 69/ERNIE 96/KERMIT 287 <MATCH: "69">

53 ORANGE <MATCH: "53 ORANGE">

APPLE 457-W <MATCH: "457-W">

除了“空格”和“-”和“/”之外,没有其他标点符号。我只想匹配第一次出现的任何数字和后面的任何字母/单词前面都有“-”或“空格”。在

我试过:

  • ^{}

    这会丢失空格后的字母。添加\s?对我来说不太好。

  • ^{}

    后面的反斜杠似乎不能去掉。

  • ^{}

    我试图用[]来处理这些反斜杠。这显然没有成功。


Tags: applefoomatch字母bar数字单词空格
1条回答
网友
1楼 · 发布于 2024-06-16 11:23:02

如果我理解您的要求,您可以使用这个,然后从组1检索匹配项:

(?im)^\D*(\d+(?:[- ][a-z ]*[a-z])?)

这是一个demo(请查看右下窗格中的捕获组)。在

要检索匹配项:

^{pr2}$

它是如何工作的?

  1. (?im)多行中,^不区分大小写的模式将我们定位在行的开头。在
  2. \D*跳过任何非数字
  3. (\d+(?:[- ][a-z ]*[a-z])?)匹配并捕获到第1组中,数字后面有短划线或空格,还有更多空格和字母,以字母结尾。在

相关问题 更多 >