当前位置: 首页 > 知识库问答 >
问题:

如何计算与给定正则表达式匹配的字符串中的字符数

钱繁
2023-03-14

给定一个包含0个或多个与正则表达式匹配的子字符串的任意字符串,如何计算该字符串中与正则表达式匹配的子字符串的字符数?

示例

给定匹配任何电子邮件地址和字符串“I have two email address:email@gmail.com and email@hotmail.com”的正则表达式,将返回int值32(“email@gmail.com”加上“email@hotmail.com”中的字符数)。

看来我说得不够清楚。让我们假设您希望对一条tweet中的字符数设置一个限制,但您希望允许人们在tweet中包含他们的电子邮件地址,并将其计算为零字符。

解决方案的可能方法签名:

public int lengthOfSubStringsMatchingRegex(String input, String regex)

共有1个答案

楚雪松
2023-03-14

只需在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()返回匹配的最后一个字符之后的偏移量。

 类似资料:
  • 本文向大家介绍Python正则表达式匹配字符串中的数字,包括了Python正则表达式匹配字符串中的数字的使用技巧和注意事项,需要的朋友参考一下 1.使用“\d+”匹配全数字 代码: 结果: ['479', '501', '870', '209', '213', '650'] 但是上述这种方式也会引入非纯数据,例子如下: 结果: ['479', '501', '870', '209', '213',

  • 我试图用正则表达式匹配替换给定的字符。例如,给定以下字符串: 如果你看看你生活中拥有的,你总是会拥有更多。如果你看看你生活中没有的,你永远不会有足够的 我想用“!”替换所有的“t”,只有在字符“ok”和“fe”之间匹配的情况下。 我用这个正则表达式得到“ok”和“fe”之间的匹配: 并且我只能将一个字符与以下正则表达式匹配: 我试图用以下方式转换正则表达式,但它不起作用: 我怎样才能在ok和fe之

  • 说到正则表达式,我没那么令人印象深刻。。。 我试图匹配一个单词中除第二个字符外的所有字符。 我想匹配 示例字符串: 我提出了以下两个正则表达式。 除第一个字符外,此字符与“uml”匹配( -- 这与第一个字符匹配,除了最后3个(uml)

  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 我需要一个与字符串中的子字符串匹配的正则表达式, 匹配的字符串必须是/*exa*/而不是/*exa*/mple*/。 它也不能包含。 我试过这些正则表达式: