如何消除正则表达式中的冗余?

时间:2014-05-05 06:10:18

标签: regex oracle plsql

我在PL / SQL中编写了一个正则表达式来验证自定义URL:

'^((http|https):\/\/)?(www[0-9]\.)?(([A-Za-z0-9_-])+\.{1})+([A-Za-z]{2,4}|\'
|| START_CHAR || '[^' || START_CHAR || END_CHAR || ']+\' || END_CHAR ||
')(\/([A-Za-z0-9_-]|\' || START_CHAR || '[^' || START_CHAR || END_CHAR ||
']+\' || END_CHAR || ')+)*(\/)?$'

START_CHAREND_CHAR是两个不同的常量字符。在我的上述正则表达式中,START_CHAR重复(四次)。

如何使用单个START_CHAREND_CHAR重写它?

1 个答案:

答案 0 :(得分:0)

你不需要。正则表达式被编译为NFA,也可能是已经压缩所有重复的DFA。保持清晰,保持简单,让计算机付出艰苦的努力。