首页 新闻 会员 周边 捐助

从一个字符串中取出想要的字符

0
悬赏园豆:10 [已解决问题] 解决于 2015-09-06 14:45
String str="[p]已知六棱锥[tex=6.6875x1.0625]23424[/tex]的底面是正六边形,[tex=2.1875x1.0]23425[/tex]平面[tex=2.25x0.9375]23426[/tex]。则下列结论不正确的是( )。[/p][p][img=237x228]140766b8c48a504.png[/img][/p]".
在上面的字符串中如何用正则表达式取出23424,23426,140766b8c48a504.png这些字符?
 
凡尘俊的主页 凡尘俊 | 初学一级 | 园豆:11
提问于:2015-08-11 14:50
< >
分享
最佳答案
0

var p=/\]([^\[\]]+)\[\/[^p]/g;

p.exec(str);

这是javascript的正则表达式

收获园豆:5
ThreeTree | 小虾三级 |园豆:1490 | 2015-08-11 15:17

C#后台怎么获取呢

凡尘俊 | 园豆:11 (初学一级) | 2015-08-11 15:18

@凡尘俊: 得自己改成C#的正则表达式啦,我不懂C#语法

ThreeTree | 园豆:1490 (小虾三级) | 2015-08-11 15:20

@ThreeTree: 谢谢!

凡尘俊 | 园豆:11 (初学一级) | 2015-08-11 15:21
其他回答(5)
0

c#语法如下(但感觉这正则匹配不出来):

Regex x = new Regex("/\\]([^\\[\\]]+)\\[\\/[^p]/g");
var str = "[tex=6.6875x1.0625]23424[/tex]";
var newStr = x.Matches(str);

收获园豆:1
稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-11 15:49

确实没匹配出来

支持(0) 反对(0) 凡尘俊 | 园豆:11 (初学一级) | 2015-08-11 15:58

@凡尘俊: 今天早上我帮你做了一个,你看下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();
         
        }
支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-12 11:06
0

1楼能匹配出来,楼主怎么没有写到23425这个数字呢?

收获园豆:1
gw2010 | 园豆:1487 (小虾三级) | 2015-08-11 16:00
0

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();

            }

具体你调试下。

收获园豆:1
肖恩部落 | 园豆:585 (小虾三级) | 2015-08-11 20:46
0

(?<=\])[0-9a-zA-Z.]+?(?=\[/(tex|img)\])

收获园豆:1
clarlespeng | 园豆:469 (菜鸟二级) | 2015-08-13 13:52
0
string s1 = "[";//开始位置
string s2 = "/]";//结束位置
Regex rg = new Regex("(?<=(" + s1 + "))[.\\s\\S]*?(?=(" + s2+ "))",RegexOptions.Multiline | RegexOptions.Singleline);
string str = rg.Match(pageinfo).Value;//取两个位置中间得字符串
收获园豆:1
wuyubing | 园豆:204 (菜鸟二级) | 2015-08-13 19:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册