1.如何使用正则表达式检查字符串中重复出现的词
private void button1_Click(object sender, EventArgs e)
{
System.Text.RegularExpressions.MatchCollection matches =//使用正则表达式查找重复出现单词的集合
System.Text.RegularExpressions.Regex.Matches(label1.Text,
@"\b(?\w+)\s+(\k)\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.net
"The the quick brown fox fox jumped over the lazy dog dog.";
}
2.正则找到字符串当中重复最多的字符
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 index = $0.length;
value = $1;
}
}
str.replace的第二个参数 是个函数function ,$0表示 整个匹配 到 的字符 串,$1表示 第一捕获分组也就是出现重复的单个 字符 ,将$0.length 与已经记录 过的最多重复index比较,如果$0.length 更大,就将它赋值给index,用value记录重复字符 $1,这个函数 返回 的是替换 文本,但这里没有返回 值,也就是说替换 为空,每次 替换 这个函数 都 被 执行
3.求一个查找相同字符串的正则表达式
虽然大家都说做不了,我还是好奇试了试,结果是似乎可行:
正则:"(.*\r\n)(?=(.*\r\n)*?\1)"(""中的部分)
编辑器:EmEditor 7.0
步骤:1.打开EmEditor,菜单栏选择“搜索”→“在文件中替换”。
2.在“查找”一项填上上述正则。
3.“文件类型”和“搜索文件夹”选择你要替换的文件及其位置。
4.记得选中“使用正则表达式(X)”复选框。
5.点击“替换全部”按钮。
p.s. 别忘了备份。
4.正则表达式求助、关于重复字符组的判断
正则表达式可以判断出重复的字符,但是无法给出重复的次数和重复位置,所以还需要自己来编程解决
完整的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 = Pattern.compile(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);
}
}
}
转载请注明出处够酷网 » python正则表达式重复次数