簡體   English   中英

Java中的正則表達式,可以拆分特殊字符和字母數字

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM