刚才没考虑到短语 还有短语这种类型 用正则将以下这几种类型 :goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的 striped-pants 过于注重形式的,刻板的,礼貌上的 a beam in 's own eye 某人自身的大缺点 a beaten track 踏出的路,常规,惯例 gosport 戈斯波特[英国英格兰南部港市]; (飞机座舱间的)通话软管 提取成:goop 信笺上方的文字 goop 印有抬头的信笺 goop 文盲的 striped-pants 过于注重形式的 striped-pants 刻板的 striped-pants 礼貌上的 a beam in 's own eye 某人自身的大缺点 a beaten track 踏出的路 a beaten track 常规 a beaten track 惯例 gosport 戈斯波特 gosport 通话软管
如果特定环境,认为就是英文的话。 测试 private static void TestRegex03() { string yourStr = @"goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的 striped-pants 过于注重形式的,刻板的,礼貌上的 a beam in 's own eye 某人自身的大缺点 a beaten track 踏出的路,常规,惯例 gosport 戈斯波特[英国英格兰南部港市]; (飞机座舱间的)通话软管 "; StringBuilder builder = new StringBuilder(); string result = Regex.Replace(yourStr, @"(?im)^([a-z'\- ]+)\s*(?:(?:[,.?!\s]|<[^>]*>)([^<>\r\n,.?!\s]+))+", delegate(Match m) { builder.Remove(0, builder.Length);//清理 foreach (Capture c in m.Groups[2].Captures) { builder.AppendLine(m.Groups[1].Value + " " + Regex.Replace(c.Value, @"\([^()]*\)|\[[^\[\]]*\]|;", "")); } return builder.ToString(); }); Console.WriteLine(result); } 输出goop 信笺上方的文字 goop 印有抬头的信笺 goop 文盲的striped-pants 过于注重形式的 striped-pants 刻板的 striped-pants 礼貌上的a beam in 's own eye 某人自身的大缺点a beaten track 踏出的路 a beaten track 常规 a beaten track 惯例gosport 戈斯波特 gosport 通话软管
但是这段用文件流 输入进来后就 变成这样了:goop 信笺上方的文字 goop 印有抬头的信笺 goop 文盲的striped-pants 过于注重形式的,刻板的,礼貌上的 a beam a in a 's a own a eye a 某人自身的大缺点a beaten a track a 踏出的路 a 常规 a 惯例gosport 戈斯波特 gosport 通话软管
我多打点要不 规制不够用。。 帮忙再解决一下把用正则把以下:air fleet 机群,航空机队 air force 空军,美国空军 air gas 风煤气(含有空气的煤气,供点灯,取暖用) air gun 气枪,空气枪 air hammer 气锤 air hole 气孔,河中不冰冻部分 athymic [医]无胸腺的 atilt 挺着长矛,摆着冲刺的架势,倾斜 atingle 刺痛的,兴奋的,疼痛的 atishoo 阿嚏(打喷嚏的拟声) atka fish [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼 atka mackerel [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼 striped-pants 过于注重形式的,刻板的,礼貌上的 stripssed-pasdfnts 过于注重形式的,刻板的,礼貌上的 goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的 goops <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的 pangen [生]泛子,胚芽(一种假设的原生质粒) pangens [生]泛子,胚芽(一种假设的原生质粒) 提取成以下:air fleet 机群 air fleet 航空机队 air force 空军 air force 美国空军 air gas 风煤气 air gun 气枪 air gun 空气枪 air hammer 气锤 air hole 气孔 air hole 河中不冰冻部分 athymic 无胸腺的 atilt 挺着长矛 atilt 摆着冲刺的架势 atilt 倾斜 atingle 刺痛的 atingle 兴奋的 atingle 疼痛的 atishoo 阿嚏 atka fish 多线鱼 atka mackerel 产于北太平洋 atka mackerel 特别是 atka mackerel 多线鱼 striped-pants 礼貌上的 striped-pants 过于注重形式的 striped-pants 刻板的, stripssed-pasdfnts 过于注重形式的,刻板的,礼貌上的 stripssed-pasdfnts 刻板的 stripssed-pasdfnts 礼貌上的 goop 信笺上方的文字 goop 印有抬头的信笺 goop 文盲的 goops 信笺上方的文字 goops 印有抬头的信笺 goops 文盲的 pangen 泛子 pangen 胚芽 pangens 泛子 pangens 胚芽
你的规则实在不明确。 atka mackerel [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼 这个你怎么规则中海能保留()中的内容呢。哪些保留哪些不保留这个规则不明确的话软件不用正则都无法识别的吧。 如果不是这个。其他的都对的上,你有些顺序贴错了。 测试 private static void TestRegex04() { string yourStr = @"air fleet 机群,航空机队 air force 空军,美国空军 air gas 风煤气(含有空气的煤气,供点灯,取暖用) air gun 气枪,空气枪 air hammer 气锤 air hole 气孔,河中不冰冻部分 athymic [医]无胸腺的 atilt 挺着长矛,摆着冲刺的架势,倾斜 atingle 刺痛的,兴奋的,疼痛的 atishoo 阿嚏(打喷嚏的拟声) atka fish [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼 atka mackerel [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼 striped-pants 过于注重形式的,刻板的,礼貌上的 stripssed-pasdfnts 过于注重形式的,刻板的,礼貌上的 goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的 goops <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的 pangen [生]泛子,胚芽(一种假设的原生质粒) pangens [生]泛子,胚芽(一种假设的原生质粒) "; StringBuilder builder = new StringBuilder(); string result = Regex.Replace(yourStr, @"(?im)^([a-z'\- ]+)\s*(?:(?:<[^>]*>|(?<!\([^)]*)[,\s])((?:\([^)]*\)|[^\r\n,]+?)+))+", delegate(Match m) { builder.Remove(0, builder.Length);//清理 foreach (Capture c in m.Groups[2].Captures) { builder.AppendLine(m.Groups[1].Value + " " + Regex.Replace(c.Value, @"\([^()]*\)|\[[^\[\]]*\]|;", "")); } return builder.ToString(); }); Clipboard.SetText(result); Console.WriteLine(result); }输出air fleet 机群 air fleet 航空机队air force 空军 air force 美国空军air gas 风煤气air gun 气枪 air gun 空气枪air hammer 气锤air hole 气孔 air hole 河中不冰冻部分athymic 无胸腺的atilt 挺着长矛 atilt 摆着冲刺的架势 atilt 倾斜atingle 刺痛的 atingle 兴奋的 atingle 疼痛的atishoo 阿嚏atka fish 多线鱼atka mackerel 多线鱼striped-pants 过于注重形式的 striped-pants 刻板的 striped-pants 礼貌上的stripssed-pasdfnts 过于注重形式的 stripssed-pasdfnts 刻板的 stripssed-pasdfnts 礼貌上的goop 信笺上方的文字 goop 印有抬头的信笺 goop 文盲的goops 信笺上方的文字 goops 印有抬头的信笺 goops 文盲的pangen 泛子 pangen 胚芽pangens 泛子 pangens 胚芽
void Main()
{
string s=" goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的";
GroupCollection m= Regex.Match(s,@"(?i)(.*)\<\w+\>(.*?)\(.*\)(.*),(.*)\[.*\](.*),(.*)").Groups;
Console.WriteLine(m[1].Value+m[2].Value+m[3].Value);
Console.WriteLine(m[1].Value+m[4].Value+m[5].Value);
Console.WriteLine(m[1].Value+m[6].Value+m[7].Value);
}/*
goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的*/
pangen [生]泛子,胚芽(一种假设的原生质粒)
panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者要把这一段提取成:
goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的
pangen 泛子
pangen 胚芽
panglossian 过分乐观的
panglossian 认为一切都趋于至善的
panglossian 过分乐观者
类似这样的数据很多 我该怎么办啊 ?
//比如这句的分割:
void Main()
{
string s=" panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者";
string[] ss=s.Split(new char[]{' ',','},StringSplitOptions.RemoveEmptyEntries); Console.WriteLine(ss[0] +" " +ss[1]);
Console.WriteLine(ss[0] +" " +ss[2]);
Console.WriteLine(ss[0] +" " +ss[3]);
}/*
panglossian 过分乐观的
panglossian 认为一切都趋于至善的
panglossian 过分乐观者*/
goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者要把这一段提取成以下模式 在用文件流打出来:
goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的
pangen 泛子
pangen 胚芽
panglossian 过分乐观的
panglossian 认为一切都趋于至善的
panglossian 过分乐观者
{
string temp = @"goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者"; MatchCollection mc = Regex.Matches(temp, "^.+$",RegexOptions.Multiline);
foreach (Match m in mc)
{
string[] t = m.Value.Trim().Split(' ', ',');
Console.WriteLine(t.Length);
}
}
得到t了 你会处理了吧
{
string yourStr = @"goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者
";
StringBuilder builder = new StringBuilder();
string result = Regex.Replace(yourStr, @"(?m)^(\w+)\s*(?:(?:<[^>]*>|\([^()]*\)|\[[^[]]*\]|[,.?!\s])([^()<>\[\]\r\n,.?!]+))+",
delegate(Match m)
{
builder.Remove(0, builder.Length);//清理
foreach (Capture c in m.Groups[2].Captures)
{
builder.AppendLine(m.Groups[1].Value + " " + c.Value);
}
return builder.ToString();
});
Console.WriteLine(result);
}result就是你要的结果。
规则理解错了。修改一下
测试 public static void Test()
{
string yourStr = @"goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者
";
StringBuilder builder = new StringBuilder();
string result = Regex.Replace(yourStr, @"(?m)^(\w+)\s*(?:(?:<[^>]*>|[,.?!\s])([^<>\r\n,.?!\s]+))+",
delegate(Match m)
{
builder.Remove(0, builder.Length);//清理
foreach (Capture c in m.Groups[2].Captures)
{
builder.AppendLine(m.Groups[1].Value + " " + Regex.Replace(c.Value,@"\([^()]*\)|\[[^\[\]]*\]",""));
}
return builder.ToString();
});
Console.WriteLine(result);
}输出goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的pangen 泛子
pangen 胚芽panglossian 过分乐观的
panglossian 认为一切都趋于至善的
panglossian 过分乐观者
goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者
striped-pants 过于注重形式的,刻板的,礼貌上的
stripfilm 幻灯片 (幻灯)片带,片条
stripline 带状线
stripling 年轻人,小伙子
stripper 清除的人,剥离器
stript <罕>strip 的过去式和过去分词
striptease 脱衣舞 跳脱衣舞
stript <罕>strip 的过去式和过去分词
按空格分隔的话就不合理了。
striped-pants 过于注重形式的,刻板的,礼貌上的
这么说逗号也是分隔的条件之一?
{
string yourStr = @"goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
panglossian 过分乐观的,认为一切都趋于至善的 过分乐观者
striped-pants 过于注重形式的,刻板的,礼貌上的
stripfilm 幻灯片 (幻灯)片带,片条
stripline 带状线
stripling 年轻人,小伙子
stripper 清除的人,剥离器
stript <罕>strip 的过去式和过去分词
striptease 脱衣舞 跳脱衣舞
";
StringBuilder builder = new StringBuilder();
string result = Regex.Replace(yourStr, @"(?m)^(\S+)\s*(?:(?:[,.?!\s]|<[^>]*>)([^<>\r\n,.?!\s]+))+",
delegate(Match m)
{
builder.Remove(0, builder.Length);//清理
foreach (Capture c in m.Groups[2].Captures)
{
builder.AppendLine(m.Groups[1].Value + " " + Regex.Replace(c.Value, @"\([^()]*\)|\[[^\[\]]*\]", ""));
}
return builder.ToString();
});
Console.WriteLine(result);
}
输出goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的pangen 泛子
pangen 胚芽panglossian 过分乐观的
panglossian 认为一切都趋于至善的
panglossian 过分乐观者striped-pants 过于注重形式的
striped-pants 刻板的
striped-pants 礼貌上的stripfilm 幻灯片
stripfilm 片带
stripfilm 片条stripline 带状线stripling 年轻人
stripling 小伙子stripper 清除的人
stripper 剥离器stript strip
stript 的过去式和过去分词striptease 脱衣舞
striptease 跳脱衣舞
用正则将以下这几种类型 :goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
striped-pants 过于注重形式的,刻板的,礼貌上的
a beam in 's own eye 某人自身的大缺点
a beaten track 踏出的路,常规,惯例
gosport 戈斯波特[英国英格兰南部港市]; (飞机座舱间的)通话软管
提取成:goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的
striped-pants 过于注重形式的
striped-pants 刻板的
striped-pants 礼貌上的
a beam in 's own eye 某人自身的大缺点
a beaten track 踏出的路
a beaten track 常规
a beaten track 惯例
gosport 戈斯波特
gosport 通话软管
测试 private static void TestRegex03()
{
string yourStr = @"goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
striped-pants 过于注重形式的,刻板的,礼貌上的
a beam in 's own eye 某人自身的大缺点
a beaten track 踏出的路,常规,惯例
gosport 戈斯波特[英国英格兰南部港市]; (飞机座舱间的)通话软管
";
StringBuilder builder = new StringBuilder();
string result = Regex.Replace(yourStr, @"(?im)^([a-z'\- ]+)\s*(?:(?:[,.?!\s]|<[^>]*>)([^<>\r\n,.?!\s]+))+",
delegate(Match m)
{
builder.Remove(0, builder.Length);//清理
foreach (Capture c in m.Groups[2].Captures)
{
builder.AppendLine(m.Groups[1].Value + " " + Regex.Replace(c.Value, @"\([^()]*\)|\[[^\[\]]*\]|;", ""));
}
return builder.ToString();
});
Console.WriteLine(result);
}
输出goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的striped-pants 过于注重形式的
striped-pants 刻板的
striped-pants 礼貌上的a beam in 's own eye 某人自身的大缺点a beaten track 踏出的路
a beaten track 常规
a beaten track 惯例gosport 戈斯波特
gosport 通话软管
goop 印有抬头的信笺
goop 文盲的striped-pants 过于注重形式的,刻板的,礼貌上的
a beam
a in
a 's
a own
a eye
a 某人自身的大缺点a beaten
a track
a 踏出的路
a 常规
a 惯例gosport 戈斯波特
gosport 通话软管
air force 空军,美国空军
air gas 风煤气(含有空气的煤气,供点灯,取暖用)
air gun 气枪,空气枪
air hammer 气锤
air hole 气孔,河中不冰冻部分
athymic [医]无胸腺的
atilt 挺着长矛,摆着冲刺的架势,倾斜
atingle 刺痛的,兴奋的,疼痛的
atishoo 阿嚏(打喷嚏的拟声)
atka fish [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼
atka mackerel [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼
striped-pants 过于注重形式的,刻板的,礼貌上的
stripssed-pasdfnts 过于注重形式的,刻板的,礼貌上的
goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
goops <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
pangens [生]泛子,胚芽(一种假设的原生质粒)
提取成以下:air fleet 机群
air fleet 航空机队
air force 空军
air force 美国空军
air gas 风煤气
air gun 气枪
air gun 空气枪
air hammer 气锤
air hole 气孔
air hole 河中不冰冻部分
athymic 无胸腺的
atilt 挺着长矛
atilt 摆着冲刺的架势
atilt 倾斜
atingle 刺痛的
atingle 兴奋的
atingle 疼痛的
atishoo 阿嚏
atka fish 多线鱼
atka mackerel 产于北太平洋
atka mackerel 特别是
atka mackerel 多线鱼
striped-pants 礼貌上的
striped-pants 过于注重形式的
striped-pants 刻板的,
stripssed-pasdfnts 过于注重形式的,刻板的,礼貌上的
stripssed-pasdfnts 刻板的
stripssed-pasdfnts 礼貌上的
goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的
goops 信笺上方的文字
goops 印有抬头的信笺
goops 文盲的
pangen 泛子
pangen 胚芽
pangens 泛子
pangens 胚芽
atka mackerel [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼
这个你怎么规则中海能保留()中的内容呢。哪些保留哪些不保留这个规则不明确的话软件不用正则都无法识别的吧。
如果不是这个。其他的都对的上,你有些顺序贴错了。
测试 private static void TestRegex04()
{
string yourStr = @"air fleet 机群,航空机队
air force 空军,美国空军
air gas 风煤气(含有空气的煤气,供点灯,取暖用)
air gun 气枪,空气枪
air hammer 气锤
air hole 气孔,河中不冰冻部分
athymic [医]无胸腺的
atilt 挺着长矛,摆着冲刺的架势,倾斜
atingle 刺痛的,兴奋的,疼痛的
atishoo 阿嚏(打喷嚏的拟声)
atka fish [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼
atka mackerel [鱼](产于北太平洋,特别是阿留申群岛海域的)多线鱼
striped-pants 过于注重形式的,刻板的,礼貌上的
stripssed-pasdfnts 过于注重形式的,刻板的,礼貌上的
goop <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
goops <古>信笺上方的(印刷)文字,印有抬头[律]的信笺,文盲的
pangen [生]泛子,胚芽(一种假设的原生质粒)
pangens [生]泛子,胚芽(一种假设的原生质粒)
";
StringBuilder builder = new StringBuilder();
string result = Regex.Replace(yourStr, @"(?im)^([a-z'\- ]+)\s*(?:(?:<[^>]*>|(?<!\([^)]*)[,\s])((?:\([^)]*\)|[^\r\n,]+?)+))+",
delegate(Match m)
{
builder.Remove(0, builder.Length);//清理
foreach (Capture c in m.Groups[2].Captures)
{
builder.AppendLine(m.Groups[1].Value + " " + Regex.Replace(c.Value, @"\([^()]*\)|\[[^\[\]]*\]|;", ""));
}
return builder.ToString();
});
Clipboard.SetText(result);
Console.WriteLine(result);
}输出air fleet 机群
air fleet 航空机队air force 空军
air force 美国空军air gas 风煤气air gun 气枪
air gun 空气枪air hammer 气锤air hole 气孔
air hole 河中不冰冻部分athymic 无胸腺的atilt 挺着长矛
atilt 摆着冲刺的架势
atilt 倾斜atingle 刺痛的
atingle 兴奋的
atingle 疼痛的atishoo 阿嚏atka fish 多线鱼atka mackerel 多线鱼striped-pants 过于注重形式的
striped-pants 刻板的
striped-pants 礼貌上的stripssed-pasdfnts 过于注重形式的
stripssed-pasdfnts 刻板的
stripssed-pasdfnts 礼貌上的goop 信笺上方的文字
goop 印有抬头的信笺
goop 文盲的goops 信笺上方的文字
goops 印有抬头的信笺
goops 文盲的pangen 泛子
pangen 胚芽pangens 泛子
pangens 胚芽