ed2k://|sadasd213213qwewqe`ed2k://sadasdqwewqe213ewr`ed2k://sadasdqwewqe213ewr
上面的字符串匹配出多个以ed2k://开头的集合,正则该如何写?
static void Main(string[] args) { Regex regx = new Regex("(?=ed2k://)((\\s|.)+?)((?=ed2k://)|$)"); MatchCollection col= regx.Matches("ed2k://|sadasd213213qwewqe`ed2k://sadasdqwewqe213ewr`ed2k://sadasdqwewqe213ewr"); foreach (Match item in col) { Console.WriteLine(item.Value); } Console.WriteLine("end----------------------------------------"); Console.ReadKey(); }
结果:
必须要正则表达式? 还是只要找出里面的集合就行了
不要用正则也行,只要有办法转换成多个ed2k开头的字符串
@踏雪wu痕: 用split分割,以`进行分割就行了,分割之后得到的集合就是ed2k开头的
@Smile灬Lucky: 原本的字符串中有很多`,我举得例子不太准确
@踏雪wu痕:你得看你的字符串是否有规律,想你举例的这种都有规律的,看中间是否有分割的字符
public class Temp20171016 {
public static void main(String[] args) {
String str="ed2k://|sadasd213213qwewqe`ed2k://sadasdqwewqe213ewr`ed2k://sadasdqwewqe213ewr";
String[] strs=str.split("ed2k://");
List<String> res=new ArrayList<String>();
for(String s:strs){
if(s.length()!=0){
res.add("ed2k://"+s);
}
}
for(String strList:res){
System.out.println(strList);
}
}
}