能否用正则表达式来统计字符串中字符重复的次数和该字符? 正则表达式提取字符串
如何使用正则表达式检查字符串中重复出现的词?
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);
}
}
}