var p=/\]([^\[\]]+)\[\/[^p]/g;
p.exec(str);
这是javascript的正则表达式
C#后台怎么获取呢
@凡尘俊: 得自己改成C#的正则表达式啦,我不懂C#语法
@ThreeTree: 谢谢!
c#语法如下(但感觉这正则匹配不出来):
Regex x = new Regex("/\\]([^\\[\\]]+)\\[\\/[^p]/g");
var str = "[tex=6.6875x1.0625]23424[/tex]";
var newStr = x.Matches(str);
确实没匹配出来
@凡尘俊: 今天早上我帮你做了一个,你看下OK不,我自己也调试了一下
static void Main() { //匹配页面上所以的符合格式的字符串 Regex x = new Regex("\\[[^(\\])]*\\][^(\\])]*(.*)[^(\\])]*\\[\\/[^\\]]*[\\]]"); //测试字符串 var str = "[tex=6.6875x1.0625]23424[/tex]sadasdasdasdadadasdadasda"; //符合条件的如newStr[0]=[tex=6.6875x1.0625]23424[/tex] var newStr = x.Matches(str); if (newStr.Count > 0) foreach (var s0 in newStr) { string s1 = Regex.Replace(s0.ToString(), "\\[/(.*)\\]", ""); string s2 = Regex.Replace(s1.ToString(), "\\[(.*)\\]", ""); Console.WriteLine(s2); } Console.ReadKey(); }
1楼能匹配出来,楼主怎么没有写到23425这个数字呢?
Regex rg = new Regex(@"^*(?<num1>[0-9]+)*](?<num2>[0-9]+)*](?<num3>[0-9]+)*](?<img>\S).png*");
var macth = rg.Match(str);
if (macth.Success)
{
num1 = macth.Groups["num1"].Value.Trim();
num2 = macth.Groups["num2"].Value.Trim();
img= macth.Groups["img"].Value.Trim();
}
具体你调试下。
(?<=\])[0-9a-zA-Z.]+?(?=\[/(tex|img)\])
string s1 = "[";//开始位置 string s2 = "/]";//结束位置 Regex rg = new Regex("(?<=(" + s1 + "))[.\\s\\S]*?(?=(" + s2+ "))",RegexOptions.Multiline | RegexOptions.Singleline); string str = rg.Match(pageinfo).Value;//取两个位置中间得字符串