【发布时间】:2017-10-03 20:59:07
【问题描述】:
我需要获取一串串联的关键字命令和数字,并将命令和数字放入列表中。
模式:
{command words} by {number} {command words} by {number} 等等...
输入字符串:
"turn right by 1 turn left by 99 up by 11 left by 28"
我想我可能会拆分“by”这个词,但这会导致第二组有数字和下一个命令(例如,向左转 1 个)。
正则表达式:
\sby\s
所需的输出:
turn right by 1
turn left by 99
up by 11
left by 28
所需列表:
turn right,turn left,up,left
1,99,11,28
如何拆分一长串遵循该模式的命令?
文本是一个没有标点符号的大长字符串。 by 这个词后面总是跟一个数字,而且模式是一致的。第一部分可能包含一个或两个关键字命令。
【问题讨论】:
-
你用什么工具来运行你的正则表达式?
-
@bulbus 你可以用
\D简化[^\d] -
你也可以使用这个:
(\w[\w ]+?)(?=\s*by\s*)\D+\K\d+。它减少了一个捕获组 -
我能想到的最简单的形式是
(\w[\w ]*?)\s*by\s*(\d+)