[英]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.