CnPack Forum » 技术板块灌水区 » 正则表达式比较适合大众日常娱乐哇


2007-4-28 23:44 skyjacker
正则表达式比较适合大众日常娱乐哇

正则表达式比较适合大众日常娱乐哇

本贴将收集各种有趣的、娱乐价值高的正则表达式 :)

近来实现一个公式编辑器的用户界面部分。
需求当然是进行用户输入的合法性检查了。

用户输入的某段公式如下:
sqrt(100)*(学习+10.24)*Log(2,10)/(1.024 * Power(2,32)
+ 吃饭 * 跑步 + Log10(100) * Ln(10)

在界面部分将汉字转为系统标识,比如 C01G0001A01,其中C01是固定不变的。

sqrt(100)*(C01G0001A01+10.24)*Log(2,10)/(1.024 * Power(2,32)
+ C01G00FFA02 * C01G0066A03 + Log10(100) * Ln(10)

虽然已经使用非正则表达式的方法也基本上解决了检查的功能需求,
但是,发现使用正则表达式解析也比较有意思,因为要写出一个解决某功能的正则表达式,
单单这一行代码正则,也需要不断的测试、尝试,像猜谜似的,娱乐价值也挺高的,还能增值呢:)。

对上面的问题,我们需要进行以下基本的两步解析:

1.查找 C01 开头的所有字符串
正则:C01[A-Za-z\d]{8}

C01G0001A01
C01G00FFA02
C01G0066A03

2.查找公式函数
正则:[A-Za-z]+[A-Za-z]+[\d]*\(

sqrt(
Log(
Power(
Log10(
Ln(

其实比较完美的结果应该是去了左括号,实在是不知道如何写了 :(

附件为测试程序源代码。

[[i] 本帖最后由 skyjacker 于 2007-4-28 23:49 编辑 [/i]]

2007-4-29 09:38 Passion
正则表达式语法老是忘记。:Q

2007-4-29 10:07 kendling
正则表达式每个软件都不同D的跟UltraEdit不同,跟EditPlus的也不同,其他的也一样。:L

2007-4-30 10:46 zzzl
写在便签上,把显示器四周都贴满,看还忘不:lol

2007-4-30 11:47 skyjacker
:D

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.