读书人

大家心目中正则的最厉害的一招展示,该

发布时间: 2012-02-02 23:57:14 作者: rapoo

大家心目中正则的最厉害的一招展示

C# code
using System;using System.Text.RegularExpressions;class Program{    static void Main(string[] args)    {        string str = "<You're angle & evil>";        string pattern = "'|&|<|>";        Regex regex = new Regex(pattern);        Program prog = new Program();        MatchEvaluator evaluator = new MatchEvaluator(prog.ConvertToXML);        Console.WriteLine(regex.Replace(str, evaluator));        Console.Read();    }    //把正则表达式的匹配到的字符转换成xml能正常识别的标识    public string ConvertToXML(Match m)    {               //string s0=m.Groups[0].Value;           //string s1=m.Groups[1].Value;           //string s2=m.Groups[2].Value;        switch (m.Value)        {            case "'":                return "&apos";            case "&":                return "&amp";            case "<":                return "&lt";            case ">":                return "&gt";            default:                return "";                            }    }}



我觉得上面这招是正则最厉害的一招

请大家把心目中觉得厉害的一招分享一下

大家相互学习下,谢谢


[解决办法]
顶。 认真看下先。
[解决办法]
效率上有多大变化?
[解决办法]
围观。。。
[解决办法]
string pattern = "'|&|<|>";
===
string pattern = "['&<>]+";

正则的魅力 要慢慢挖掘
[解决办法]
这个。感觉普普通通的吧。
[解决办法]
C# code
        string str = "<You're angle & evil>";        string pattern = "['&<>]";        //str = Regex.Replace(str, pattern, new MatchEvaluator(delegate(Match m) {             // or                       str = Regex.Replace(str, pattern, m =>        {            switch (m.Value)            {                case "'":                    return "&apos";                case "&":                    return "&amp";                case "<":                    return "&lt";                case ">":                    return "&gt";                default:                    return "";            }        });
[解决办法]
探讨

string pattern = "'|&|<|>";
===
string pattern = "['&<>]+";

正则的魅力 要慢慢挖掘

[解决办法]
类似于Javascript里的String.replace方法,也支持第二个参数为函数

正好写过一个正则笔记:
http://beinet.cn/Blog/BlogShow.aspx?id=8fe6311d-ea7b-4e81-9fa1-465b593c82c1
[解决办法]
C# code
struct UInt96{  ulong hi;  uint  lo;    // 构造函数  public UInt96(ulong h, uint l)  {    hi = h;    lo = l;  }    // 返回加1后的结果  public UInt96 Inc()  {    if (lo < 0xFFFFFFFF) return new UInt96(hi, lo + 1);    return new UInt96(hi + 1, 0);  }    // 自增运算符  public static UInt96 operator ++(UInt96 x)  {    return x.Inc();  }    // 十六进制字符串表示  public override string ToString()  {    return string.Join(" ", Regex.Split(string.Format("{0:X16}{1:X8}", hi, lo), "(?!^)(?=(?:.{4})+$)"));  }} 


[解决办法]

探讨

C# code
struct UInt96
{
ulong hi;
uint lo;

// 构造函数
public UInt96(ulong h, uint l)
{
hi = h;
lo = l;
}

// 返回加1后的结果
public UInt96 Inc()
{
if (lo < 0xFFFFFFFF) retu……

[解决办法]

[解决办法]
进来学习的。
[解决办法]
C# code
string s = "1234567890";string t = string.Join(" ", Regex.Split(s, "(?!^)(?=(?:.{4})+$)"));// 就是把一个字符串从右往左每4位加一个空格,结果是:"12 3456 7890"
[解决办法]
C# code
string s = "1234567890";// 考虑了一下,这样更简单:string t = Regex.Replace(s, "(?!^)(?=(?:.{4})+$)", " ");// 把一个字符串从右往左每4位加一个空格,结果是:"12 3456 7890"
[解决办法]
还有这个贴子,也是讨论正则的应用的:
http://topic.csdn.net/u/20081011/15/3895f4e7-5f71-4fcd-af35-e5b43457b12f.html

看看27楼,和LZ的有些相似:
C# code
  // 去掉SQL语句中的注释  static string RemoveSqlComment(string sql)  {    return Regex.Replace    (      sql,      @"(?ms)'[^']*'|--.*?$|/\*.*?\*/",      delegate(Match m)      {        switch (m.Value[0])        {          case '-': return "";          case '/': return " ";          default : return m.Value;        }      }    );  }
[解决办法]
测试目前能连续回复的楼数
[解决办法]
测试目前能连续回复楼数
[解决办法]
测试目前能连续回复楼数
[解决办法]

一个用户只允许连续回复3次。




[解决办法]
正则是相当的强吖。
[解决办法]
C# code
    string s = "某某的面积是12345678平方米";    string t = Regex.Replace(s, @"(?<=\d)(?=(\d\d\d)+(?!\d))", ",");    // 同理,这个正则的作用是把一串数字每3位加一个逗号。    Console.WriteLine(t); // 输出:某某的面积是12,345,678平方米
[解决办法]
我觉得正则最强的地方就是我只需要写一行正则,就可以完成我要写100行代码做的事情
[解决办法]
果然厉害啊 ... 不过我觉得正则只要用对了地方, 帮偶们解决问题, 那就厉害啦..
[解决办法]
上次看到个正则是匹配人民币大写的。非常牛逼、、、
[解决办法]
这个正则也很牛:
C# code
using System;using System.Text.RegularExpressions;class Program{  // 把阿拉伯数字的金额转换为中文大写数字  static string ConvertToChinese(double x)  {    string s = x.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");    string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");    return Regex.Replace(d, ".", delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟兆京垓秭穰"[m.Value[0] - '-'].ToString(); });  }  static void Main()  {    Random r = new Random();    for (int i = 0; i < 10; i++)    {      double x = r.Next() / 100.0;      Console.WriteLine("{0,14:N2}: {1}", x, ConvertToChinese(x));    }  }}/* 可能的输出:  5,607,400.68: 伍佰陆拾柒仟肆佰元陆角捌分  2,017,723.33: 贰佰零壹柒仟柒佰贰拾叁元叁角叁分    751,181.17: 柒拾伍壹仟壹佰捌拾壹元壹角柒分  7,849,851.53: 柒佰捌拾肆玖仟捌佰伍拾壹元伍角叁分  2,629,143.90: 贰佰陆拾贰玖仟壹佰肆拾叁元玖角 13,461,629.68: 壹仟叁佰肆拾陆壹仟陆佰贰拾玖元陆角捌分  4,594,391.16: 肆佰伍拾玖肆仟叁佰玖拾壹元壹角陆分 13,046,560.60: 壹仟叁佰零肆陆仟伍佰陆拾元陆角 13,041,371.21: 壹仟叁佰零肆壹仟叁佰柒拾壹元贰角壹分 20,639,609.44: 贰仟零陆拾叁玖仟陆佰零玖元肆角肆分*/ 


[解决办法]
说明一下,楼上那个转换大写金额的正则的作者是Q_282898034,不是我。
[解决办法]

探讨
……

[解决办法]
探讨
C# code
struct UInt96
{
ulong hi;
uint lo;

// 构造函数
public UInt96(ulong h, uint l)
{
hi = h;
lo = l;
}

// 返回加1后的结果
public UInt96 Inc()
{
if (lo < 0x……

[解决办法]
"(?!^)(?=(?:.{4})+$)"
匹配不在最开头的,距离结尾处4个字符或其倍数的位置。
[解决办法]
果然厉害。
[解决办法]
强的人一般都比较低调,你们的正则确实写的可以,但如果能打包成.dll文件,封装成公共的方法供大家调用,那就是完美。 写程序需要向服务器靠拢。
如何优化视图?一个视图里添加6张表 数据量100W左右,而且建立视图的时候用过分组,现在就连在数据库本地查询 都得4到5分钟 有时还慢 啊 我的头都大了 大侠们 如何解决? 谁愿意帮我解决啊
[解决办法]
说个有趣的吧

范围:0 - 9
要求:数字需要连续,即:0123,1234,12,234,567,123,123456,123456789这样的可以通过
03456只能匹配出3456

正则
(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0))+\d
[解决办法]
楼上的这位,我最喜欢这种问题,呵呵,不过你要把问题写清楚点
[解决办法]
楼上的这位 指 army369168520
[解决办法]
果断收藏,以后会用到
探讨
这个正则也很牛:

C# code
using System;
using System.Text.RegularExpressions;

class Program
{
// 把阿拉伯数字的金额转换为中文大写数字
static string ConvertToChinese(double x)
{
string s = x.ToString("#L#E……

[解决办法]
都是牛人
收藏

[解决办法]
探讨

说个有趣的吧

范围:0 - 9
要求:数字需要连续,即:0123,1234,12,234,567,123,123456,123456789这样的可以通过
03456只能匹配出3456

正则
(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0))+\d

[解决办法]
很有意思啊。。
[解决办法]

[解决办法]
学习学习
[解决办法]
探讨
一个用户只允许连续回复3次。

[解决办法]


佩服
[解决办法]
先顶再看
[解决办法]
小弟佩服
[解决办法]

[解决办法]
学习学习
[解决办法]
学习了
------解决方案--------------------


探讨
类似于Javascript里的String.replace方法,也支持第二个参数为函数

正好写过一个正则笔记:
http://beinet.cn/Blog/BlogShow.aspx?id=8fe6311d-ea7b-4e81-9fa1-465b593c82c1

[解决办法]
// 去掉SQL语句中的注释
static string RemoveSqlComment(string sql)
{
return Regex.Replace
(
sql,
@"(?ms)'[^']*'|--.*?$|/\*.*?\*/",
delegate(Match m)
{
switch (m.Value[0])
{
case '-': return "";
case '/': return " ";
default : return m.Value;
}
}
);
}


[解决办法]
外能的正则表达式
[解决办法]
留个标记.
[解决办法]
我是要去搞个五角星了
[解决办法]
正则很高深
[解决办法]

[解决办法]
[^]
我认为最有趣的
[解决办法]
顶,这么好,大家帮忙顶啊
[解决办法]
路过,学习了。。
[解决办法]

[解决办法]
JScript code
var ver = top.opera ? (opera.version().replace(/\d$/, "") - 0)        : parseFloat((/(?:IE |fox\/|ome\/|ion\/)(\d+\.\d)/.          exec(navigator.userAgent) || [, 0])[1]);var dom = {    ie: !!top.VBArray && Math.max(document.documentMode || 0, ver),    firefox: !!top.crypto && ver, //内核Gecko    opera: !!top.opera && ver, //内核 Presto 9.5为Kestrel 10为Carakan    chrome: !!(top.google && top.chrome) && ver, //内核V8    safari: /apple/i.test(navigator.vendor) && ver// 内核 WebCore}
[解决办法]
好贴,学习...
[解决办法]

[解决办法]

[解决办法]
只能是学习 ,不能说什么
[解决办法]
我是来混分的
[解决办法]
学习了,谢谢
[解决办法]
学习了!
[解决办法]
果然厉害
[解决办法]
厉害啊,
[解决办法]
只能是学习 ,不能说什么
[解决办法]
Java code
public static void main(String[] args) { 
String s = "abcd1234";
String[] arr1 = s.split("(? <=\\G.{1})"); // [a, b, c, d, 1, 2, 3, 4]
String[] arr2 = s.split("(? <=\\B.{2})(?=\\B.{3})"); // [abc, d, 1, 234]
String[] arr3 = s.split("(?=\\B.{2})"); // [a, b, c, d, 1, 2, 34]


}


[解决办法]
收藏一下,
[解决办法]
收藏一下,
[解决办法]
我擦 做软件两年了
自己好无知啊········
[解决办法]
好贴,学习...
[解决办法]
收藏下
[解决办法]
标记起来
[解决办法]
学习学习先,膜拜!
[解决办法]

[解决办法]
定,,,,顶啊啊啊

[解决办法]

[解决办法]

[解决办法]
顶。 认真看下先。
[解决办法]
呵呵呵。。。。。。。
[解决办法]
探讨

string pattern = "'|&|<|>";
===
string pattern = "['&<>]+";

正则的魅力 要慢慢挖掘

[解决办法]
不是很懂
[解决办法]
好多人回帖呀,我要灌水
[解决办法]
如果代码都写成正则样,那可以赶走90%的程序员!
[解决办法]
学习学习
[解决办法]
看不太懂
[解决办法]
呵呵,不错呀

[解决办法]
留贴备用
[解决办法]
探讨
留贴备用

[解决办法]
厉害,先顶起!

读书人网 >C#

热点推荐