我需要获取一串连接的关键字命令和数字,并将命令和数字放入列表中。
模式:
输入字符串:
"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
如何拆分遵循该模式的长串命令?
文本是一个没有标点符号的大字符串。单词依次后跟一个数字,模式是一致的。第一部分可能包含一个或两个关键字命令。
答案 0 :(得分:1)
您的字符串似乎都具有相同的结构:s
(一个或多个单词,后跟word or words by 111
字面意义,后跟至少一位数字)
by
(\w[\w ]*?)\s+by\s+(\d+)
turn right by 1 turn left by 99 up by 11 left by 28
turn right by 1
turn right
1
turn left by 99
turn left
99
up by 11
up
11
left by 28
left
28
将以下内容捕获到捕获组1中
(\w[\w ]*?)
任何单词字符,后跟集\w[\w ]*?
(任何单词字符或空格)中的任何内容,任意次数,但尽可能少[\w ]
一个或多个空格后跟\s+by\s+
字面,后跟一个或多个空格。by
将一个或多个数字捕获到捕获组2