POSIX正则表达式:排除表达式中的单词?

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 :)?]

Pat*_*shu 8

根据http://www.regular-expressions.info/refflavors.html,lookaheads和lookbehinds不属于POSIX风格.

您可以考虑使用lexing(标记化)和解析,如果您的问题太复杂,无法像正则表达式那样干净地表示.

  • 像`([[^ h“] [^”] + | h [^ t“] [^ +] + | ht [^ t”] [^ t“] + | ......这样的长表达式可能我是第二个Patashu关于词法分析的建议,特别是建议您寻找现有的用于解析HTML的库,它将获得其他详细信息,例如属性可以具有单引号和双引号,看起来像属性的内容可能是正文文本或注释或CDATA部分等的一部分。 (2认同)