我构建了某种编辑器,所以我的文本被该正则表达式分割:
str.split("((?<=[a-zA-Z0-9={}])\\s(?=[a-zA-Z0-9={}(]))|[\\n\\r]+|((?<=[{}])|(?=[{}]))|((?<=[=])|(?=[=]))");
它确实运行良好,例如我可以编写以下代码:
int x = 5
char y = 3
while x + y > 2 {
cmd1 50 20
cmd3 40 30
}
它像这样分割它:
[int, x, , =, 5, char, y, , =, 3, while, x + y > 2, , {, cmd1, 50, 20, cmd3, 40, 30, , }]
(我忽略空格,这样就可以了)
但是当我写例如:
print "hello"
print "x+2 / 5 = 3"
这就是结果:
[print "hello", print "x+2 / 5, , =, 3"]
所以第一个应该是[print,“ hello”],第二个应该是相同的,我的意思是应该是[print,“ x + 2/5 = 3”],但不幸的是,情况并非如此你可以看到。
当我的正则表达式遇到引号时,我该如何忽略它的规则?并被“ {TEXT}”分割?
谢谢。
编辑:
@WiktorStribiżew进行了很好的修复:https://regex101.com/r/ZsHf46/1 但是它不会将逗号中的单词分开,例如
print“ hello”应该是:[print,“ hello”]而不是[print“ hello”]
我该如何解决?