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

可以在字符串拆分中使用零宽度匹配的正则表达式吗?

徐高韵
2023-03-14
问题内容
System.out.println(
    Arrays.deepToString(
        "abc<def>ghi".split("(?:<)|(?:>)")
    )
);

打印出来[abc, def, ghi],好像我分开了"<|>"。我要打印[abc, <def>, ghi]。有什么方法可以处理一些正则表达式魔术来完成我在这里想要的吗?

也许是一个更简单的示例:

System.out.println(
    Arrays.deepToString(
        "Hello! Oh my!! Good bye!!".split("(?:!+)")
    )
);

打印[Hello, Oh my, Good bye]。我要打印[Hello!, Oh my!!, Good bye!!]。`。


问题答案:

感谢Cine提供的信息,我 认为 这些是我正在寻找的答案:

System.out.println(
    Arrays.deepToString(
        "abc<def>ghi<x><x>".split("(?=<)|(?<=>)")
    )
); // [abc, <def>, ghi, <x>, <x>]


System.out.println(
    Arrays.deepToString(
        "Hello! Oh my!! Good bye!! IT WORKS!!!".split("(?<=!++)")
    )
); // [Hello!,  Oh my!!,  Good bye!!,  IT WORKS!!!]

现在,通过对所有不同的量词进行实验,诚实地发现了第二个。既不是贪婪也不是勉强的工作,而是占有欲的工作。

我仍然不确定为什么。



 类似资料:
  • 问题内容: 我是regex的新手,我想做的是在特定条件下拆分String,但我不知道该怎么做。 这是样品/条件 我希望字符串被拆分,,,,,, 这可能吗? 问题答案: 如果 确实 需要使用正则表达式,则可能应该使用环顾四周机制,因为您不想 在 此字符 之前 或 之后 进行拆分。 输出:

  • 问题内容: 使用该模块,似乎无法拆分为空字符串的模式匹配: 换句话说,即使找到匹配项,即使它是空字符串,也无法拆分该字符串。 的文档似乎支持我的结果。 对于这种特殊情况,很容易找到“解决方法”: 但这是一种容易出错的方法,因为这样我就必须提防已经包含要分割的子字符串的字符串: 有没有更好的方法可以拆分与模块的空模式匹配?另外,为什么不允许我首先这样做呢?我知道使用正则表达式的其他拆分算法是可行的。

  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 问题内容: 我的代码: 输出: 我知道的 : “一个?” 代表零个或一次出现的字符“ a”。 Java API说: matcher.start()返回上一个匹配项的起始索引。 matcher.end()返回匹配的最后一个字符后的偏移量。 matcher.group()返回与上一个匹配项匹配的输入子序列。对于具有输入序列s的匹配器m,表达式m.group()和s.substring(m.start(

  • 问题内容: 我有一个字符串,需要根据出现的“,”(逗号)进行拆分,但是需要忽略在一对括号内出现的任何字符串。例如, 应拆分为 问题答案: 对于非嵌套 嵌套 (括号内的括号)