如何使用单个正则表达式来分割Java中的所有以下文本。
<ab>::=<cd> <ef>|<gh> => ['<ab>', '<cd> <ef>', '<gh>']
<ri>::=hello|nope|we|super => ['<ri>', 'hello', 'nope', 'we', 'super']
<ri>::= hello | nope | we |super => ['<ri>', 'hello', 'nope', 'we', 'super']
答案 0 :(得分:1)
正如Rawing在评论中所建议的那样,您可以在::=
和管道符号上拆分。为了确保你直接修剪空格我建议这样:\s*\|\s*
。这将|
与包含空格之前和之后的任何数量的空格进行匹配。因此,当拆分时,空格也将被移除。
现在要将它们组合起来,你将它们放在一个捕获组中,然后用or或
分隔它们 (::=|\s*\|\s*)
查看此群组捕获的内容here
绿色标记的部分是分割的部分,“正常”部分是分裂的结果。
答案 1 :(得分:0)
这可以吗?
它只捕捉括号内的单词或单词
/\w+|<\w+>/g
答案 2 :(得分:0)