[英]Regex in Java that can split special characters and alphanumerics
我正在研究在Java中使用正则表达式,并在此链接上发现了一些有趣的东西。 它说
[:punct:] Punctuation symbols . , " ' ? ! ; : # $ % & ( ) * + - / < > = @ [ ] \ ^ _ { } | ~
用于分解特殊字符。 Java中是否有类似的东西,可以说我有一个变量:
String sample = "I have $100";
反正我可以打破变量:我有$ 100作为
I
have
$
100
由于您只想在£
或$
上拆分,因此建议您将它们放在自己的字符类[£$]
而不要使用预定义的字符类,其中包含许多可能不应该拆分的字符。 因此,尝试使用诸如split("\\\\s|(?<=[£$])")
\\\\s
每个空格 (?<=[£$])
-每个在其之前有£
或$
地方,例如$|100
( |
表示该地方)。 此处使用的机制称为后向 。 演示版
for (String s : "I have $100 and £200".split("\\s|(?<=[£$])"))
System.out.println(">" + s);
输出:
>I
>have
>$
>100
>and
>£
>200
您可以使用以下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());
}
尝试, 环视正则表达式,
String sample = "£9999";
String[] arr = sample.split("(?<=[$£])|(?= )");
for (String string : arr) {
System.out.println(string);
}
输出:
£
9999
\\b
是此任务的一个非常简单的正则表达式,它与单词边界匹配。 拆分后,您需要修剪结果并过滤出空字符串,然后您就可以得到想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.