regex - 使用正则表达式分割复杂的字符串

标签 regex string split

我正在尝试以一种相当具体的方式分割字符串。我一直在使用 .split().replaceall() 方法,但我无法正确使用。

以下是我需要拆分的字符串的几个示例,以及拆分后它们的样子。 , 表示数组中的一个新字符串。

示例 1:“(and (or (can-hit-robot) (wall) ) (can-hit-robot) (wall) ) )”

"(and", "(or", "(can-hit-robot)", "(wall)", ")", "(can-hit-robot)", "(wall)", ")"

示例 2:“(seq (射击) (if (can-hit-robot) (shoot) (move) ) )”

"(seq", "(shoot)", "(if", "(can-hit-robot)", "(shoot)", "(move)", ")", ")"

示例 3:“(while(wall)(if (can-hit-robot)(shoot)(move)))”

"(while", "(wall)", "(if", "(can-hit-robot)", "(shoot)", "(move)", ")", ")"

任何帮助将不胜感激!

最佳答案

这个怎么样?

(?:\s*(?=\())|(?:(?<=\))\s*)

虽然它依赖于lookbehind,所以没有lookbehind的引擎可能无法处理这个表达式。 :(

所表达的规则是,在左括号之前和右括号之后进行拆分,同时切断括号外部的所有空格。因此,交替的左侧部分与通向左括号的空格相匹配;右侧部分将匹配右括号后继续的空格。

关于regex - 使用正则表达式分割复杂的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562941/

相关文章:

c# - 从谷歌翻译方括号中拆分字符串

c# - 如何优化正则表达式性能?

c# - 如何使用 Regex.Split 拆分字符串并保留所有分隔符?

Java - 从文件中获取行

Python .split() 在每个可分割标记栏空白处的字符串上,但忽略一些特定的字符串

oracle - PL/SQL Split,根据黑日期将一个日期分割成新的日期!

python - 正则表达式不会删除 split 函数中的特殊字符

regex - 在已编译的正则表达式中禁用捕获? (例如,Perl 5.22+,/n 修饰符)

java - 如何进行字符串比较?

string - 如何将字符串列表转换为方案中的一个字符串?