簡體   English   中英

Java拆分正則表達式不起作用

[英]Java Split RegEx not working

我在 java 中的一個非常簡單的任務中遇到了很多困難。 首先,我想將字符串拆分為數組,單獨使用每個字母並使用正則表達式(這很重要,因為我將在此之后將其升級為更復雜的正則表達式,但我首先需要運行這個簡單的)

    Stringbase = "artetbewrewcwewfd";       
    String arr2[] = base.split("\\.");

為什么我不能這樣做?

    String base = "artetbewrewcwewfd";       
    String arr2[] = base.split("\\[abcdefghijklmnopqrstuvwxyz]");

甚至也不像這樣。

https://ideone.com/cCYVSc

https://ideone.com/DYnh3m

感謝您的時間

請注意\\\\. (轉義點)在您的第一個正則表達式中匹配一個文字點字符(並且您的字符串沒有點,因此, split返回整個字符串)。

第二"\\\\[abcdefghijklmnopqrstuvwxyz]"模式相匹配的序列[abcdefghijklmnopqrstuvwxyz]因為你通過轉義第一毀字符類構建體[ (和逃脫[相匹配的文字[ ,從而,閉合]也將被視為一個文字符號,而不是特殊的構造字符)。

要在字符串中的每個字符之前拆分,您可以使用

String arr2[] = "artetbew42rewcwewfd".split("(?!^)(?=.)");
System.out.println(Arrays.toString(arr2));
// => [a, r, t, e, t, b, e, w, 4, 2, r, e, w, c, w, e, w, f, d]

查看IDEONE 演示

在這里, (?!^)在字符串的最開始匹配失敗(以免將空格作為第一個元素返回),並且(?=.)是在除換行符之外的任何字符之前匹配的正向前瞻。

如果您也想在換行符之前匹配,請使用Pattern.DOTALL標志,或在模式之前添加(?s)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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