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

Java拆分正在吞噬我的角色

裴俊雅
2023-03-14
问题内容

我有这样的字符串String str = "la$le\\$li$lo"

我想将其拆分以获取以下输出"la","le\\$li","lo"。\ $是转义的$,因此应将其保留在输出中。

但是,当我做 str.split("[^\\\\]\\$")ÿ得到"l","le\\$l","lo"

从我得到的正则表达式匹配a $和i $然后删除。关于如何找回角色的任何想法吗?

谢谢


问题答案:

使用零宽度匹配断言:

    String str = "la$le\\$li$lo";
    System.out.println(java.util.Arrays.toString(
        str.split("(?<!\\\\)\\$")
    )); // prints "[la, le\$li, lo]"

正则表达式本质上是

(?<!\\)\$

它使用负向后看来断言没有在前\

也可以看看

  • Regular-expressions.info/解决方法

断言分裂的更多示例

简单的句子拆分,保留标点符号:

    String str = "Really?Wow!This.Is.Awesome!";
    System.out.println(java.util.Arrays.toString(
        str.split("(?<=[.!?])")
    )); // prints "[Really?, Wow!, This., Is., Awesome!]"

使用将长字符串拆分为固定长度的部分 \G

    String str = "012345678901234567890";
    System.out.println(java.util.Arrays.toString(
        str.split("(?<=\\G.{4})")
    )); // prints "[0123, 4567, 8901, 2345, 6789, 0]"

使用后向/超前组合:

    String str = "HelloThereHowAreYou";
    System.out.println(java.util.Arrays.toString(
        str.split("(?<=[a-z])(?=[A-Z])")
    )); // prints "[Hello, There, How, Are, You]"


 类似资料:
  • 为什么会有例外 静默忽略?我可以看到流在打印后停止,但没有记录任何内容。请注意,问题不是一般的日志配置,因为如果我在我的文件中设置,我会看到很多输出。

  • 我为Rails应用程序运行了4个Unicorn进程,它们耗尽了所有可用的MySQL连接,导致其崩溃,出现“连接太多”错误。今天我不得不重新启动我的DB实例4次=( 过程 我的database.yml正在为ActiveRecords池设置22个连接... Unicorn配置文件如下所示: 如果我们查看数据库控制台,我们会看到这样的情况。他们已经吃掉了大部分连接。(我现在除了独角兽运行什么都没有)在我

  • 我在Lumen(应用程序A)中创建了一个简单的API,它: 接收PSR-7请求接口 替换对应用程序B的请求的URI 并通过古斯发送请求。 上面的代码将数据传递给应用程序B以获取查询参数、x-www-form-urlencoded或JSON内容类型。但是,它无法传递多部分/form-data。(该文件在应用程序A中可用:

  • 为什么Mockito会吞噬堆栈痕迹?例如,如果我有一个 和一个测试,例如 抛出的异常看起来总是 (这里提供的示例只是一个简化--我要处理更多的间接、类等等。我不能让Mockito吞噬部分模拟堆栈跟踪的关键部分……)

  • 我只有一个具有大xml文件最后顺序的文件,而不是许多小xml文件。你能告诉我出了什么问题吗?太感谢你们了!