当前位置: 首页 > 面试题库 >

按除括号外的所有空格分割字符串

柯昱
2023-03-14
问题内容

我从来不是一个正则表达式大师,所以我需要您的帮助!我有一个像这样的字符串:

String s = "a [b c] d [e f g]";

我想使用空格作为定界符来分割此字符串-但我不想分割在[]方括号内出现的空格。因此,从上面的示例中,我想要这个数组:

{"a", "[b c]", "d", "[e f g]"}

关于什么正则表达式的任何建议可以结合使用split以实现这一目标?

这是另一个例子:

"[a b] c [[d e] f g]"

变成

{"[a b]", "c", "[[d e] f g]"}

问题答案:

我认为这应该起作用,使用负前瞻
-不匹配在没有括号的情况下关闭括号之前没有的空格:

"a [b c] d [e f g]".split("\\s+(?![^\\[]*\\])");

对于嵌套的括号,您将需要编写一个解析器,正则表达式不能提供无限的级别,并且对于一个或两个以上的级别而言,它变得过于复杂。例如,我的表达因

"[a b [c d] e] f g"


 类似资料:
  • 问题内容: 我得到了这样的格式的字符串: 因此从根本上讲,它是演员姓名的列表(可选地,后面是他们在括号中的角色)。角色本身可以包含逗号(演员的名字不能,我强烈希望如此)。 我的目标是将此字符串分成成对的列表- 。 一个明显的解决方案是遍历每个字符,检查是否出现,并在出现逗号时将其拆分。但这似乎有点沉重… 我正在考虑使用正则表达式拆分它:首先用括号将字符串拆分: 这里的奇数元素是演员名称,甚至是角色

  • 问题内容: 我需要用空格分割我的字符串。为此,我尝试: 但这似乎不起作用。 问题答案: 你所拥有的应该工作。但是,如果提供的空格默认为…其他内容?你可以使用空格正则表达式: 这将导致任意数量的连续空格将你的字符串拆分为标记。 附带说明一下,我不确定“ splited”是不是一个词:)我相信成为split的受害者的状态也是“ split”。这是那些棘手的语法问题之一:-)不要试图变得挑剔,只是想我会

  • 我有一个正则表达式: 它成功地捕获了括号中的内容,例如,。 我还想捕获匹配中由字符分隔的组,例如,。 前者将在与组和上产生匹配,后者与组和。 我的正则表达式不太流利,我试过:

  • 问题内容: 我正在解析包含以下行的文件 我想将其拆分为单独的字段。 在我的示例中,有四个字段:类型,标题,页面和注释。 分割后的预期结果是 显然,简单的字符串拆分将不起作用,因为它将仅在每个空格处拆分。我想分割空格,但保留括号和引号之间的所有内容。 我该如何拆分? 问题答案: 这个正则表达式应该为您工作 说明

  • 问题内容: 我想在逗号(,)上的java中拆分字符串,但是只要逗号(,)位于某些括号之间,就不应拆分。 例如字符串: 应该产生: 当我使用时: 我最终将整个文本划分为(last,if),我可以看到split需要一个正则表达式,但是我似乎想不出如何使它完成工作。 问题答案: 您可以使用此模式-(不适用于嵌套括号) 演示版

  • 问题内容: 在Go中从某个任意字符串中剥离所有空格的最快方法是什么。 我从字符串包中链接了两个函数: 有人有更好的方法吗? 问题答案: 以下是一些用于从字符串中剥离所有空格字符的不同方法的基准:(源数据): :用途; 随着遇到更多的非空白字符,逐渐增加分配的空间量 :和; 产生大量中间数据 用途; 执行一次分配,但是如果源字符串主要是空格,则可能会总体上分配。 package main_test