Regex 正则表达式只匹配字符串中的数字

Regex 正则表达式只匹配字符串中的数字,regex,Regex,我只需要拿下面字符串中的数字作为例子 lori ipsum 1, 2 e 3 dorm kietjiojwoijdej 162, 131 e 107 m² lori fsdfsd ipsum 2 e 3 dormitórios fsrfsrfrfrfkietjiojwoijdej 162, 131 e 107 m² lori ipsum dfs 3 dorm kidfsrfrfrffretjiojwoijdej 62, 13 e 10 m² lori ipsum 1 dormitórios

我只需要拿下面字符串中的数字作为例子

lori ipsum 1, 2 e 3 dorm kietjiojwoijdej 162, 131 e 107 m²

lori fsdfsd ipsum 2 e 3 dormitórios fsrfsrfrfrfkietjiojwoijdej 162, 131 e 107 m²

lori ipsum dfs 3 dorm kidfsrfrfrffretjiojwoijdej 62, 13 e 10 m²

lori ipsum 1 dormitórios kietjiojwoijdej 16, 31 e 107 m²
期望输出为:

[0] => 1, [1] => 2, [2] => 3

[0] => 2, [1] => 3

[0] => 3

[0] => 1
我尝试使用以下正则表达式:

(\d(?= dorms))|(\d(?= dormitórios))
我的问题是逗号,空格和“e”字符,我不知道结果是什么

我的测试:

对于当前的正则表达式,您只匹配3 in
3 dormitórios
和1 in
1 dormitórios
,因为在前瞻中,您指定了一个空格,后跟
dorms
dormitórios

您不匹配
3宿舍中的3个
,因为您将
(?=dorms)
与额外的
s
一起使用

相反,您可以使用1个正数而不是2个正数和可选的非捕获组
(?:itórios)
来匹配这两个变体,并在要匹配的单词前后添加单词边界
\b

详细信息

  • \d
    匹配单个数字
  • (?=
    非捕获组
    • *?
      匹配任何字符零次或多次非贪婪
    • \b
      单词边界
    • dorm(?:itórios)?
      匹配
      dorm
      dormitórios
    • \b
      单词边界
  • 关闭非捕获组
对于当前正则表达式,您只匹配3 in
3 dormitórios
和1 in
1 dormitórios
,因为在前瞻中,您指定了一个空格,后跟
dorms

您不匹配
3宿舍中的3个
,因为您将
(?=dorms)
与额外的
s
一起使用

相反,您可以使用1个正数而不是2个正数和可选的非捕获组
(?:itórios)
来匹配这两个变体,并在要匹配的单词前后添加单词边界
\b

详细信息

  • \d
    匹配单个数字
  • (?=
    非捕获组
    • *?
      匹配任何字符零次或多次非贪婪
    • \b
      单词边界
    • dorm(?:itórios)?
      匹配
      dorm
      dormitórios
    • \b
      单词边界
  • 关闭非捕获组