匹配数字后面带有空格的正则表达式

4
我想使用正则表达式来分割以下字符串。
1 hi my name is John. 2 I live at house 32. 3 I see stars.

to

[hi my name is John,  I live at house 32. , I see stars]

请注意,我正在尝试在数字后面跟一个空格的位置进行拆分。

4
我的编程语言是什么? - Sina Iravanian
@SinaIravanian。Java。这重要吗? - anthonyms
3个回答

8

/(^|\b\s+)\d+\s+/g处分割。

解释:

  • (^|\b\s+) 包含 ^\b\s+) 的集合
    • ^ 字符串开头
    • \b\s+ 一个单词边界后跟1个或多个空格/制表符
  • \d+ 0到9之间的数字重复1次或多次(因此会匹配1、12、123等)
  • \s+ 一个或多个空格/制表符

编辑:

(^|\.\s+)\d+\s+可能更适合你。


1
在数字后面添加\s+,因为数字后面的空格是必需的(与数字前面相反!) - micantox
1
你不能重复一个单词边界。因此,在\b之后的量词是多余的。 - stema
1
这个表达式仍然无法工作。它只匹配第一个数字,因为在2和3之前没有单词边界后跟空格。(我不知道为什么你有这个要求。)在Regexr上查看 - stema
1
为什么这么麻烦呢?直接使用\d+不就可以了吗?或者如果你想要更精确的匹配,可以使用\b\d+ - Qtax
@Qtax 然后,“我曾经住在32号房子,就在街对面”将匹配到“32”。 - h2ooooooo
显示剩余6条评论

3

Maybe this will do: [0-9]{1}[\ ]


[0-9]{1} 等于 [0-9],而 [\ ] 等于 \ - gitaarik
[\ ] 只是一个空格(除非使用 /x/(?x),那么你需要转义它)。 - Qtax

1

Split on:

/\d+ /

只有第一个匹配项会是空的,因为它是第一个数字1之前的匹配项,所以你需要忽略它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接