首先,我什么也做不了,只能参考我认为有史以来最著名的 SO 帖子:
现在,它甚至是 StackOverflow 的问题吗?我不知道,但我会尝试...
我从个人角度讲。虽然我从来没有这样做过,但我知道在我必须解析 HTML 的那一天,我肯定不会使用正则表达式;我会尝试找到一个 HTML 解析库。美好的。
但我不知道为什么。
有一次,我决定在 Java 中进行 CSS 验证。我“凭胆量”知道正则表达式不会削减它,所以我使用了Parboiled。
我不知道为什么。
“为什么”困扰着我。我根本不是正则表达式的新手。我只是无法在正则表达式引擎可以做什么和不能做什么之间划清界限。
我的问题如下:这条明确的界限是什么?输入的什么基本特征必须存在,以便在数学上证明任何正则表达式引擎都不能可靠地确定成功和失败?
您能否给出一个简单的理论输入,该输入会导致正则表达式引擎无法给出可靠的“匹配/不匹配”答案?如果是,这种输入的定义特征是什么?
编辑为了这个讨论,我将添加一个由 SO 上的帖子建议的任务(我目前找不到链接,抱歉),它比 HTML 更简单,但我不会使用正则表达式:shell 命令行解析。
就外壳而言,它们是等效的:
alias ll="ls -l"
alias ll=ls\ -l
alias l"l"=ls' -'l
"alia"s l"l= "ls\ -l
Shell 引用机制如此之多,以至于在这种情况下我将只创建一个 Parboiled 语法……但这“出乎我的意料”。因为我发现它可能更容易......但这并不能证明这对于正则表达式是不可行的。