簡體   English   中英

模式匹配的正則表達式

[英]Regular Expression for pattern matching

任何人都可以幫助我修復正則表達式以查找兩個@ 符號之間的子字符串。

fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk.

現在我想要檢索這兩個 HELLO 子字符串。 提前致謝。 這有助於我在檢索數據時進行模式匹配。

這將匹配@字符之間的文本:

(?<=@).*?(?=@)

這些是兩端的環視(非消耗匹配),我在兩者之間使用了非貪婪匹配,因此匹配不會一直運行到下一個@包圍匹配的結尾


如果你想要一個優雅的單線提取所有這些 phrax,請執行以下操作:

String[] phrases = input.replaceAll("(^.*?@)|(@[^@]*$)", "").split("@.*?@");

下面是一些測試代碼:

public static void main(String[] args) {
    String input = "fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk";
    String[] phrases = input.replaceAll("(^.*?@)|(@[^@]*$)", "").split("@.*?@");
    System.out.println(Arrays.toString(phrases));
}

輸出:

[hello, hello]
    String text = "fghgkghfk@hello1@ggjgkglgll@hello2@ghfufjkfk";

    Pattern ptrn = Pattern.compile("@(\\w+)@");

    Matcher mtchr = ptrn.matcher(text);

    while(mtchr.find())
    {
        String match = mtchr.group(1);

        System.out.println("Match = <" + match + ">");
    }

@之間字符串的簡單正則表達式:

'@(.*?)@' 

解釋:

@      # Match starts at literal @
(.*?)  # Capture everything inbetween (non-greedy)
@      # Match ends at literal @

這里查看它的實際效果。

暫無
暫無

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

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