0

我只是对正则表达式有疑问......我真的不知道所以任何形式的帮助表示赞赏。

问题是:定义一个正则表达式,该表达式表征由所有字符串 a 和 b 组成的语言,其中第二个和第二个字符是“b”。

关于如何开始这个问题的任何想法?

非常感谢

4

3 回答 3

1

假设你/问题的意思是

仅由 'a's 和 'b's 组成的字符串,第 2 和 2nd-Last 个字符是 'b'。

这可能适用于大多数正则表达式风格(可能需要将其包含在 中/ /

^[ab]b[ab]*b[ab]$
于 2012-10-21T03:12:06.020 回答
1

要解决此问题,您需要:

  1. a查找以or开头的字符串b: ^(a|b),
  2. 将 ab作为第二个字符 `^(a|b)b
  3. 后跟一串as、bs 或两者:^(a|b)b[a-b]*
  4. 还有另一个b^(a|b)[a-b]*b
  5. 并以另一个aor结尾b^(a|b)b[a-b]*b(a|b)$
  6. 那么您需要针对该正则表达式测试您的字符串:/^(a|b)b[a-b]*b(a|b)$/.test(string)

使用 jQuery 和 JavaScript 的概念证明:

​$('li').each(
    function(i,el) {
        var text = $(el).text();
        if (/^((a|b)b[a-b]*b(a|b))$/.test(text)) {
            $(el).addClass('matched');
        }
    });​​​

JS 小提琴演示

参考:

于 2012-10-21T03:14:57.617 回答
0

您在谈论的是来自形式语言理论的正则表达式。我们在这里讨论的正则表达式是正则表达式的一个混蛋分支,它的作用远不止识别正则语言。如果您刚刚开始学习“纯理论”正则表达式,那么您现在可能应该远离正则表达式。

于 2012-10-21T03:27:24.630 回答