Regex:只提取单词前的数字



我有一些句子像

  • "公寓在金奈有4个房间与游泳池">
  • "这间公寓有三分之二的房间,里面有一个"香菜">

如何提取单词"之前的唯一数字;房间|房间";。寻找一个必须是4和2/3的答案。我试过的代码,

room_found =re.findall(r"ds?/?d?s?(?=(rooms)|(room))", str_arg)
print(room_found)

这将打印[('','4 room'(]和[(''、'2/3 room'](],但我预计只打印4和2/3。

您可以使用

d+(?:/d+)?(?=s?rooms?b)

解释

  • d+匹配1个以上数字(或\d表示单个数字(
  • (?:/d+)?可选地匹配/和1+位数字
  • (?=积极前瞻,断言直接在右边的是
  • s?rooms?b匹配可选的whitspace字符,后跟一个或多个房间
  • )关闭展望

Regex演示

import re
str_arg = ""Apartment at Chennai has 4 rooms with a swimming pool" "this apartment has 2/3 room with a coridor""

room_found =re.findall(r"d+(?:/d+)?(?=s?rooms?b)", str_arg)
print(room_found)

输出

['4', '2/3']

您可以添加一个条件来查找单词room和rooms之前的所有数字。

你可以把所有有效的值都放在方括号里,就像你允许数字之外的正斜杠一样。

CCD_ 7=>它选择数字和正斜杠。

CCD_ 8=>它选择单词room和rooms前面的数字。

[d/]+(?=srooms?)

请在这里找到演示

您可以使用([0-9]+) rooms。所以你的最终代码看起来像:

import re
str_arg = ""Apartment at Chennai has 4 rooms with a swimming pool" "this apartment has 2/3 room with a coridor""

room_found = re.findall(r"([0-9]+) rooms", str_arg)
print(room_found)

最新更新