9co*_*an9 5 regex negative-lookahead regex-negation posix-ere
我正在尝试使用POSIX(扩展)正则表达式创建一个正则表达式,我可以在我的C程序代码中使用它.
具体来说,我想出了以下内容,但是,我想在匹配的表达式中排除"http"这个词.经过一些搜索,看起来POSIX并不像捕获特定字符串那样明显.我在下面的例子中使用了一个叫做"负面看起来"的东西(即(?!http :)).但是,我担心这可能只是POSIX以外的方言中定义的正则表达式可用的东西.是否允许否定前瞻?POSIX中是否允许使用逻辑NOT运算符(即!)?
工作正则表达式示例:
href|HREF|src[[:space:]]=[[:space:]]\"(?!http:)[^\"]+\"[/]
如果我不能像其他方言那样使用负面预测,我可以对上面的正则表达式做什么来过滤掉特定的单词"http:"?理想情况下,有没有任何方法没有逆逻辑,并最终在过程中创建一个荒谬的长正则表达式?(我上面的那个已经很久了,如果可能的话我宁愿看起来不那么混乱)
[注意:我已经在Stack Overflow中查阅了其他相关的主题,但最相关的主题似乎只是"一般地"提出这个问题,这意味着给出的答案并不一定意味着它们在另一个或两个主题中是POSIX风格的==> ,我已经看到了上面的 (?!insertWordToExcludeHere) 负面预测,但我担心它只适用于PHP.)
[注2:我将采取任何POSIX正则表达式措辞,任何帮助将不胜感激.有没有人建议过滤掉"http:"的正则表达式是什么样的,以及它如何适合我当前的正则表达式,取代(?!http :)?]
根据http://www.regular-expressions.info/refflavors.html,lookaheads和lookbehinds不属于POSIX风格.
您可以考虑使用lexing(标记化)和解析,如果您的问题太复杂,无法像正则表达式那样干净地表示.