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

在空格上分割,某些字符之间除外

郑茂材
2023-03-14
问题内容

我正在解析包含以下行的文件

类型(“书”)标题(“金苹果”)页面(10-35 70 200-234)评论(“好书”)

我想将其拆分为单独的字段。

在我的示例中,有四个字段:类型,标题,页面和注释。

分割后的预期结果是

['type(“ book”)','title(“ golden apples”)','pages(10-35 70 200-234)','comments(“好书”)]

显然,简单的字符串拆分将不起作用,因为它将仅在每个空格处拆分。我想分割空格,但保留括号和引号之间的所有内容。

我该如何拆分?


问题答案:

这个正则表达式应该为您工作 \s+(?=[^()]*(?:\(|$))

result = re.split(r"\s+(?=[^()]*(?:\(|$))", subject)

说明

r"""
\s             # Match a single character that is a “whitespace character” (spaces, tabs, and line breaks)
   +              # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
(?=            # Assert that the regex below can be matched, starting at this position (positive lookahead)
   [^()]          # Match a single character NOT present in the list “()”
      *              # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
   (?:              # Match the regular expression below
                     # Match either the regular expression below (attempting the next alternative only if this one fails)
         \(             # Match the character “(” literally
      |              # Or match regular expression number 2 below (the entire group fails if this one fails to match)
         $              # Assert position at the end of a line (at the end of the string or before a line break character)
   )
)
"""


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

  • 问题内容: 解析文本文件时需要帮助。文本文件包含类似 我的问题是单词之间的空格不相似。有时只有一个空格,有时会给出多个空格。 我需要以这样的方式分割字符串,使我只会得到单词,而不是空格。 问题答案: 会工作。的在正则表达式的结尾,将治疗多发性空格一样单个空格。它返回一个字符串数组(),没有任何结果。

  • 问题内容: 我从来不是一个正则表达式大师,所以我需要您的帮助!我有一个像这样的字符串: 我想使用空格作为定界符来分割此字符串-但我不想分割在方括号内出现的空格。因此,从上面的示例中,我想要这个数组: 关于什么正则表达式的任何建议可以结合使用以实现这一目标? 这是另一个例子: 变成 问题答案: 我认为这应该起作用,使用负前瞻 -不匹配在没有括号的情况下关闭括号之前没有的空格: 对于嵌套的括号,您将需

  • 问题内容: 我想像这样分割一个字符串 与。但是当我尝试拆分时,我得到了 我尝试将空字符串拆分后用于检查空字符串,但在android中不起作用。这是我的代码: 我认为有一种方法可以像这样拆分:但无法弄清楚如何。 谢谢您的帮助! 问题答案: 由于to的参数是一个正则表达式,因此您可以查找一个或多个空格()而不是一个空格()。

  • 问题内容: 这是我打算拆分为数组的示例字符串: 输出应为: 下面在每个空间上拆分,我如何在每个其他空间上拆分? 问题答案: 您可以这样做:

  • 我只需要删除特定字符之间的一些空格。这是我的数据: 我希望删除两个##标签之间的所有空白,这些空白除了数字之外没有任何其他分隔。我的数据应该如下所示: 我目前正在尝试在PHP中使用以下正则表达式来preg_replace这些空格,但是,我尝试过的所有内容都失败了。 调试演示