1. 首页 > 科技

能否用正则表达式来统计字符串中字符重复的次数和该字符? 正则表达式提取字符串

能否用正则表达式来统计字符串中字符重复的次数和该字符?正则表达式提取字符串

如何使用正则表达式检查字符串中重复出现的词?

    private void button1_Click(object sender, EventArgs e)

    {

    System.Text.RegularExpressions.MatchCollection matches =//使用正则表达式查找重复出现单词的集合

    System.Text.RegularExpressions.Regex.Matches(label1.Text,

    @"\b(?<word>\w+)\s+(\k<word>)\b", System.Text.

    RegularExpressions.RegexOptions.Compiled | System.Text.

    RegularExpressions.RegexOptions.IgnoreCase);

    if (matches.Count != 0)//如果集合中有内容

    {

    foreach (System.Text.RegularExpressions.Match//遍历集合

    match in matches)

    {

    string word = match.Groups["word"].Value;//获取重复出现的单词

    MessageBox.Show(word.ToString(), "英文单词");//弹出消息对话框

    }

    }

    else { MessageBox.Show("没有重复的单词"); }//弹出消息对话框

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    label1.Text =//创建字符串对象来自CodeGo

    "The the quick brown fox  fox jumped over the lazy dog dog.";

    }

正则找到字符串当中重复最多的字符

var arr = str.split('');

str = arr.sort().join('');

这应该是将字符 串按单个 字符 分割,然后排序组合,经过 这一步,相同 的字符 就会排列到 一起

var re = /(\w)\1+/g;

(\w)外面的圆括号表示 分组,\1表示 重复第一分组中的内容 ,\1+表示 \w匹配 到 的字符 重复n次,后面的g表示执行 全部替换

str.replace(re,function($0,$1){

if(index < $0.length){

index = $0.length;

value = $1;

}

}

str.replace的第二个参数 是个函数function ,$0表示 整个匹配 到 的字符 串,$1表示 第一捕获分组也就是出现重复的单个 字符 ,将$0.length 与已经记录 过的最多重复index比较,如果$0.length 更大,就将它赋值给index,用value记录重复字符 $1,这个函数 返回 的是替换 文本,但这里没有返回 值,也就是说替换 为空,每次 替换 这个函数 都 被 执行

正则表达式查找一个字符串出现的次数

首先这个没有必要用正则,直接找一下就行了,如果语言支持,可能有类似这样的函数

int count = subStrCount(str, 'A');

if(count>5){

//错误

}

如果没有这样的接口自己实现一个也很简单;

如果非得用正则

pattern = "A";

直接match下,看下捕获的组数就行了

这样可以么?

正则表达式求助、关于重复字符组的判断。

正则表达式可以判断出重复的字符,但是无法给出重复的次数和重复位置,所以还需要自己来编程解决

完整的Java程序如下

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class AA {

 public static void main(String[] args) {

  String str="OHnonononogod";

  String regex="([A-Za-z]+?)\\1+";

  Pattern p = Patternpile(regex);

  Matcher m = p.matcher(str);

  while(m.find()){

   String duplicate=m.group(1);

   int times=0,start=0,po;

   while((po=str.indexOf(duplicate,start))!=-1){

    start=po+duplicate.length();

    times++;

   }

   int position=str.indexOf(m.group(0));

   System.out.println(str);

   System.out.println("重复的字符:"+duplicate);

   System.out.println("重复的次数:"+times);

   System.out.println("重复的位置:"+(position+1)+"-"+start);

  }

 }

}