簡體   English   中英

如何計算與給定正則表達式匹配的字符串中的字符

[英]How to count the characters in a String that matched a given regex

給定一個包含0個或更多與正則表達式匹配的子串的任意String,如何計算該String中與正則表達式匹配的子串的一部分中的字符數?

例:

如果正則表達式匹配任何電子郵件地址和字符串“我有兩個電子郵件地址:email@gmail.com和email@hotmail.com”,這將返回int值32(“email @ gmail”中的字符數。 com“plus”email@hotmail.com“)。

看起來我不夠清楚。 讓我們假裝您想要設置推文中字符數的限制,但是您希望允許人們在推文中包含他們的電子郵件地址並將其計為零字符。

解決方案的可能方法簽名:

public int lengthOfSubStringsMatchingRegex(String input, String regex)

只需遍歷正則表達式的匹配組,並使用length()來提取字符數。 將它們添加到您的櫃台,就是這樣。

public int lengthOfSubStringsMatchingRegex(String input, String regex)
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);

    int count = 0;
    while (m.find())
        count += m.group().length();

    return count;
}

作為替代方案,但可讀性稍差,您可以直接使用偏移量:

count += m.end() - m.start();

start()返回上一個匹配的起始索引。
end()返回最后一個字符匹配后的偏移量。

暫無
暫無

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

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