在多个字符上拆分字符串

 手机用户2502926887 发布于 2023-02-09 22:48

我想在许多字符之一上分割一个句子(下面列出).我的正则表达式能够根据大多数字符进行拆分,但不能在'[',']'(打开和关闭方括号)上进行拆分.如果我将字符串SPECIAL_CHARACTERS_REGEX更改为[ :;'=\\()!-\\[\\]],它将开始拆分字符串中的整数,而不是拆分方括号.如何将正则表达式分割为方括号而不是整数('[]'表示所有整数).

另一个相关的问题,是否还有一种方法可以从字符串中拆分数字?例如9pm应该分成9pm.

This:

private static final String SPECIAL_CHARACTERS_REGEX = "[ :;'=\\()!-]";
String rawMessage = "let's meet tomorrow at 9:30p? 7-8pm? i=you go (no Go!) [to do !]"
String[] tokens = rawMessage.split(SPECIAL_CHARACTERS_REGEX);

Gives:

Input: let's meet tomorrow at 9:30p? 7-8pm? i=you go (no Go!) [to do !]
output: [let, s, meet, tomorrow, at, 9, 30p?, 7, 8pm?, i, you, go, , no, Go, , , [to, do, , ]]

和,

This:

private static final String SPECIAL_CHARACTERS_REGEX = "[ :;'=\\()!-\\[\\]]";
String rawMessage = "let's meet tomorrow at 9:30p? 7-8pm? i=you go (no Go!) [to do !]"
String[] tokens = rawMessage.split(SPECIAL_CHARACTERS_REGEX);

Gives:
let's meet tomorrow at 9:30p? 7-8pm? i=you go (no Go!) [to do !]
[let, s, meet, tomorrow, at, , , , , p, , , , , pm, , i, you, go, , no, , o, , , , to, do]

预期产量:

{"let", "s", "meet", "tomorrow", "at", "9", "30", "p", "7", "8", "pm", "i", "you", "go", "no", "Go", "to", "do"}

Jerry.. 5

将破折号放在最后(或开始或转义它),否则,它将被视为一系列字符:

[ :;'=\\()!\\[\\]-]

您的原始的正则表达式匹配是之间的所有字符![包括数字,字母块和一束其它符号如(,)等等.

要获得您期望的结果,您可能会使用以下内容:

[ ?:;'=\\()!\\[\\]-]+|(?<=\\d)(?=\\D)

(?<=\d)(?=\D)是分开数字和非数字(或者您可能也想使用[0-9],[^0-9]哪些应该更有效/更快)

ideone演示

1 个回答
  • 将破折号放在最后(或开始或转义它),否则,它将被视为一系列字符:

    [ :;'=\\()!\\[\\]-]
    

    您的原始的正则表达式匹配是之间的所有字符![包括数字,字母块和一束其它符号如(,)等等.

    要获得您期望的结果,您可能会使用以下内容:

    [ ?:;'=\\()!\\[\\]-]+|(?<=\\d)(?=\\D)
    

    (?<=\d)(?=\D)是分开数字和非数字(或者您可能也想使用[0-9],[^0-9]哪些应该更有效/更快)

    ideone演示

    2023-02-09 23:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有