Java中的正则表达式,可以分割特殊字符和字母数字

时间:2013-11-24 11:45:24

标签: java regex posix

我正在研究在Java中使用正则表达式,并在this link上发现了一些有趣的东西。它说

[:punct:]   Punctuation symbols . , " ' ? ! ; : # $ % & ( ) * + - / < > = @ [ ] \ ^ _ { } | ~

用于分解特殊字符。在Java中有类似的东西,假设我有一个变量:

String sample = "I have $100";

无论如何我可以打破变量:我有100美元

I
have
$
100

4 个答案:

答案 0 :(得分:2)

由于您只想在£$上进行拆分,我建议将它们放在您自己的角色类[£$]中,而不是使用包含许多可能不应包含的字符的预定义字符分开。所以尝试split("\\s|(?<=[£$])")之类的东西会分开

  • \\s - 每个空白
  • (?<=[£$]) - £之前$$|100之前的所有地方|for (String s : "I have $100 and £200".split("\\s|(?<=[£$])")) System.out.println(">" + s); 代表此类地点)。这里使用的机制称为look-behind

演示

>I
>have
>$
>100
>and
>£
>200

输出:

{{1}}

答案 1 :(得分:1)

您可以使用以下Java代码

获取您要求的输出
 Pattern pattern = Pattern.compile("(\\$)|(\\w+)");/*(\\w*)"); changed to \\w+ to avoid empty matches, based on AlanMoore's remark*/
            Matcher matcher = pattern.matcher("I have $100");
            while(matcher.find()){
//                if(matcher.group().isEmpty())continue;

                System.out.println(matcher.group());
            }

答案 2 :(得分:0)

尝试,环顾正则表达式,

  String sample = "£9999";
  String[] arr = sample.split("(?<=[$£])|(?= )");
  for (String string : arr) {
     System.out.println(string);
  }

<强>输出:

£
9999

答案 3 :(得分:0)

此任务的一个非常简单的正则表达式是\b,它与单词边界匹配。拆分后你需要修剪结果并过滤掉空字符串,然后你得到你想要的东西。