我自己无法找到解决这个问题的方法。在正则表达式中是否可能?
我有这个样本:
...:...:If...Then...:...:Else...:...:...:IfEnd:...
我想用冒号分割字符串,而不是 if 语句中的冒号。
类似于:
...
...
如果...则...:...:Else...:...:...:IfEnd
...
我搜索了其他问题,但都是1个字符的分隔符,你可以用[^set]
解决问题。 正则表达式可以实现这种情况吗?
我什至没有半有效的正则表达式解决方案,因为我尝试过的所有方法都不起作用。哈哈。
如果你想知道我在做什么。我正在尝试创建一个应用程序来解析一些脚本。系统将分离语句并单独解析每一行。但由于显而易见的原因,分离 if 语句/while 循环/for 循环将无法正常工作。 我的解决方案的思考方式是否不传统或不正确?
最佳答案
假设您的输入没有换行符,您可以使用:
String str = "...:...:If...Then...:...:Else...:...:...:IfEnd:...";
String[] toks = str.replaceAll("(\\bIf\\b.*?\\bIfEnd\\b):?|:", "$1\n").split("\\n+");
for (String tok: toks) {
System.err.printf("%s%n", tok);
}
输出:
...
...
If...Then...:...:Else...:...:...:IfEnd
...
此正则表达式首先匹配从 If
到 EfEnd
的文本,并将其捕获到组 #1 中,或者匹配冒号。捕获组 #1 的后向引用用于替换,同时在其前面添加 \n
。
关于java - 正则表达式 - 在 `:` 上分割字符串,但不在 if 语句内分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40961028/