RegEx - 逐字拆分

时间:2014-02-01 08:03:09

标签: .net regex string

我一直在努力为我的女儿写一些超现实的文字冒险游戏,一切进展顺利,但我一直试图用RegEx处理特定的输入。

输入字符串需要以数字(可选择十进制)开头,后跟一系列字符(min 1,max n )后面紧跟一个空格,然后是和< / em>,后面跟着一个空格,然后是 n 数量的单词(没有数字),直到分词(和)。 “和”之后的任何单词都需要在另一组中被捕获。

所以示例有效输入可能是:

5 blue cows and a bucket of milk

2.5mph and a really slow car

并分成三组,如下:

[5] [blue cows] [a bucket of milk] or [2.5] [mph] [a really slow car]

成为RegEx的新手我会提前为我的可怕尝试道歉,但我相信我需要使用 lookahead

到目前为止,我的尝试看起来有点像这样:

工作正常,但每侧只捕获一个单词,例如: [5] [blue] [a]

^(\d*\.?\d*)\s*([a-z]*)\s*\band\b\s([a-z]+)

使用前瞻的这个按预期捕获多个单词,但每个单独的角色都是单独捕获的:

^(\d*\.?\d*)\s*(.?)+(?=and)\s*\band\b\s((.?)+)

任何帮助都会非常感激,特别是因为我女儿对问题的回答是“爸爸,你应该剃掉你的胡子,然后它会起作用吗?”

干杯们:)

史蒂夫

1 个答案:

答案 0 :(得分:1)

我认为您的问题是您没有在匹配组中包含空格。检查这个正则表达式:

^(\d*\.?\d*)\s*([a-z\s]*)\sand\s([a-z\s]*)$