一个正则表达式,是否些错了?

fy_dodo 2006-08-17 02:38:51
需要匹配的字符串:
共61封 第1-10封 | 第 1 [2] [3] [4] [5] >> 页 上一页 | 下一页

说明:其中邮件总封数,以及第几页的显示
1) 邮件封数,可能情况 :
I. 0
II. 10
III. 12345
IV. ……

2) 显示当前页格式,可能显示的情况:
I. 1
II. 1[2][3]
III. 1[2][3][4][5]>>
IV. [1]2[3]
V. [1]2[3][4][5]>>


我写的正则表达式:
\^共[0-9]+封\s第1\-10封\s\|\s第\s[\[?[1-9]\]?\s]+[\>\>]?页\s上一页\s\|下一页$\
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chiny 2006-08-17
  • 打赏
  • 举报
回复
[]表示一个类,或者一个范围。比如26个字母,10个数字,标点符号等。

()表示一个组,就是一个子的正则式。

[>>]没有意义,在某些DFA可能陷入死循环。

两个都可以使用量词如+,?,*等。

如果想了解更多JavaScript正则式,参考微软的Script 5.6 Documentation.

如果想了解各个语言和平台如java,ruby,perl,awk,grep等的差异,看
regular expressions 2nd edition。东南大学出版社出的。


正则表达式是个很有用的工具,几乎所有流行语言都有工具包。



fy_dodo 2006-08-17
  • 打赏
  • 举报
回复
感谢chiny.
由于>>是可能有,可能没有的,所以我将表达式改成如下:
regex = /^共\d{1,}封 第1\-10封 \| 第 (\[?\d{1,2}\]?\s)+(>>)? 页 上一页 \| 下一页$/i;

另:请问,什么时候用[],什么时候用(),我搞的不是很清楚,比如说写成[>>]?,就是错误的写法。
hhbkinger 2006-08-17
  • 打赏
  • 举报
回复
regex = /^共\d{1,}封 第1\-10封 \| 第 (\[?\d{1,2}\]?\s)+>> 页 上一页 \| 下一页$/i;
chiny 2006-08-17
  • 打赏
  • 举报
回复
一般情况下,如果字符不需要转义,比如>就不转义,在某些语言实现上会抱错的,如awk。

还有如果很确定的就是一个空格,不要使用\s,系统又做了分析。

chiny 2006-08-17
  • 打赏
  • 举报
回复
regex = /^共\d{1,}封 第1\-10封 \| 第 (\[?\d{1,2}\]?\s)+>> 页 上一页 \| 下一页$/i;
fy_dodo 2006-08-17
  • 打赏
  • 举报
回复
说明:其中邮件总封数,以及第几页为动态显示的。(不好意思上面没写完整)

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧