- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先,我只能引用我认为是有史以来最著名的 SO 帖子:
RegEx match open tags except XHTML self-contained tags
现在,这甚至是 StackOverflow 的问题吗?我不知道,但我会尝试...
我从个人角度说说。虽然我从来没有这样做过,但我知道在我必须解析 HTML 的那一天,我肯定不会使用正则表达式;我会尝试找到一个 HTML 解析库。很好。
但我不知道为什么。
有一次,我决定用 Java 进行 CSS 验证。我“凭胆量”知道正则表达式不会削减它,所以我使用了 Parboiled .
我也不知道为什么。
“为什么”困扰着我。我根本不是正则表达式的新手。我无法明确区分正则表达式引擎可以做什么和不能做什么。
我的问题如下:这条清晰的线是什么?输入的什么基本特征必须存在,以便在数学上证明任何正则表达式引擎都不能可靠地确定成功和失败?
您能否提供一个简单的、理论上的输入,这将导致正则表达式引擎无法提供可靠的“匹配/不匹配”答案?如果是,这种输入的定义特征是什么?
编辑 为了便于讨论,我将添加一个由 SO 上的帖子建议的任务(对不起,我目前找不到链接),它比HTML,但我不会对其使用正则表达式:shell 命令行解析。
就 shell 而言,它们是等价的:
alias ll="ls -l"
alias ll=ls\ -l
alias l"l"=ls' -'l
"alia"s l"l= "ls\ -l
Shell 引用机制如此之多,在这种情况下我将只创建一个 Parboiled 语法...但这“超出了我的胆量”。因为我发现它可能更容易...但这并不能证明这对正则表达式不可行。
最佳答案
正则表达式可以判断regular languages .但是 HTML 不是一种常规语言。这是一个 context-free language .上下文无关语言是常规语言的超集。
基本上任何可以包含递归元素的语言都是不规则的。常规语言必须是“扁平化”的,所以不能有嵌套。例如,在 HTML 中,一个 <div>
可以嵌套在另一个里面,并且它们可以嵌套的深度没有限制。这是正则表达式无法处理的一般嵌套类型。
关于html - 正则表达式和 HTML 不混合的根本原因是什么?它背后的理论是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17054995/
我正在寻找匹配 /(?=\W)(gimme)(?=\W)/gi 或类似的东西。 \W 应该是零宽度字符来包围我的实际匹配项。 也许有一些背景。我想用添加的文字填充替换某些单词(总是 \w+),但前提是
如何在不使用 Intent 连接到 VPN 服务的情况下以编程方式检测流量是否正在通过 VPN。有系统调用吗? 最佳答案 这个有效: private boolean checkVPN() {
我是一名优秀的程序员,十分优秀!