Board logo

Subject: 正则表达式比较适合大众日常娱乐哇 [Print This Page]

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

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

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

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

用户输入的某段公式如下:
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(

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

附件为测试程序源代码。

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

Attachment: 正则表达式.rar (2007-4-28 23:44, 240.75 K) / Download count 399
http://bbs.cnpack.org/attachment.php?aid=297

Image Attachment: show.jpg (2007-4-28 23:44, 34.12 K) / Download count 423
http://bbs.cnpack.org/attachment.php?aid=298


Author: Passion    Time: 2007-4-29 09:38

正则表达式语法老是忘记。
Author: kendling    Time: 2007-4-29 10:07

正则表达式每个软件都不同D的跟UltraEdit不同,跟EditPlus的也不同,其他的也一样。
Author: zzzl    Time: 2007-4-30 10:46

写在便签上,把显示器四周都贴满,看还忘不
Author: skyjacker    Time: 2007-4-30 11:47






Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0