这些句子的正则表达式是什么?

时间:2015-01-21 03:48:28

标签: regex

我遇到了跟​​随Reges的问题 (1)找到所有以字母'a'开头并以字母'd'结尾的单词。显示最长的单词。
我的正则表达是这个

^a[a-zA-Z]+d$

但我不知道如何从他们那里找到最长的......?

(2)单独计算偶数和奇数的数量也显示奇数和偶数的最长数 我有做R.E对于奇数是

[13579]

和Even是

[02468]

1 个答案:

答案 0 :(得分:3)

正则表达式不够强大,无法选择最长的字符串,因此您必须制作一个用正则表达式扫描文本的程序,并选择最长的匹配。

你的第一个正则表达式几乎是好的 - 用+替换*,否则单词ad(从a开始到d结尾)同时将^$锚点替换为两端的\b\b表示"字边界"),因为您要扫描文本反复进行比赛。

第二个正则表达式应该是这样的:

\b[0-9]*[13579]\b // << Odd numbers
\b[0-9]*[02468]\b // << Even numbers

再次,使用这些正则表达式扫描文本,随时存储最长的匹配项,并在到达搜索文本末尾时打印它。