有这样一串字符串,如下:我的2008年,最完美的老婆是一个不说话的女人,最完美的情人是一个不需要固定见面的女人。<a href="Journal_ActicleList.aspx?JournalNianhao=2008" class="act" target='_blank'>女人需要哭泣,并且只有在男人能听到的时候才哭。字符串里有2个“2008”,当“2008”在前后没有被“<"和">"包围起来时,我才能将"2008"替换为"二零零八",否则不做处理!请问,怎么判断这个"2008"是否前后各有一个“<"和">",不管“<"和">"的位置离“2008”有多远,只(例如:无论是"<2008>"还是"<a href="……?nian=2008" />等都是合乎要求的,而"<a href="……" > 2008 />"等则是不合要求的)求一个函数来判断,该怎么做?
System.Text.RegularExpressions.Regex.Replace("输入字符串", "(<[^>]*)2008([^>]*>)", "$1二零零八$2", RegexOptions.Singleline);要替换外面的将正则参数改为
"(>?[^<]*)2008([^<]*<?)"
替换尖括号外面的正则是
"([^<>]*>?[^<>]*)2008([^<>]*<?[^<>]*)"
我现在只需要替换所有的在">"和"<"之间相匹配的内容即可,就是WO_YOU_XIE_SHANG_XIN说的在尖括号外面的内容即可!WO_YOU_XIE_SHANG_XIN的"([^<>]*>?[^<>]*)2008([^<>]*<?[^<>]*)"使用后将我的匹配内容全都替换得没了,变成“<a”了,为什么啊?
str=Regex.Replace("2008<2008>",@"(?<!<[^>]*)2008","二零零八");
结果
str="二零零八<2008>";
string s = "我的<2008>2008年,< <2008 > 2008 >";
string pat = "([^<]*)2008([^>]*)";
string sp = Regex.Replace(s, pat, "$1二零零八$2");
输出为:
sp="我的<2008>二零零八年,< <2008 > 二零零八 >"
这段代码不能处理嵌套<>。