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

9lowa7mx  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(128)

我正在尝试使用POSIX(扩展)正则表达式创建一个正则表达式,我可以在我的C程序代码中使用。
具体来说,我已经提出了以下内容,但是,我想在匹配的表达式中排除单词“http”。在一些搜索中,它看起来不像POSIX使它明显地捕捉特定的字符串。在下面的例子中,我使用了一种叫做“消极的观点”的东西(即:(?!http:))。然而,我担心这可能只适用于在POSIX之外的方言中定义的正则表达式。是否允许负前瞻?在POSIX中是否允许逻辑NOT运算符(即**!)?
工作正则表达式示例:
href|HREF|src[[:space:]]*=[[:space:]]*\"(?!http:)[^\"]+\"[/]
如果我不能像在其他方言中那样使用负先行,我可以对上面的正则表达式做些什么来过滤掉特定的单词“http:“?理想情况下,是否有任何方法可以避免逆逻辑并最终在过程中创建一个长得可笑的正则表达式?(我上面的一个已经很长了,如果可能的话,我不希望它看起来更混乱)
[NOTE:我在Stack Overflow中咨询了其他相关的线程,但是最相关的线程似乎只“一般性地”问这个问题,这意味着给出的答案并不一定意味着它们是POSIX风格的==>在另外一两个线程中,我已经看到了上面的(?!insertWordToExcludeHere)负前瞻,但我担心它只适用于PHP。
[NOTE 2:我也会接受任何POSIX正则表达式短语,任何帮助都将不胜感激。有没有人对过滤掉“http:“的正则表达式有什么建议,以及它如何适合我当前的正则表达式,取代
(?!http:)**?

yk9xbfzb

yk9xbfzb1#

根据Regular-Expressions.info,lookaheads和lookbehind不属于POSIX风格。
如果您的问题太复杂而不能用正则表达式清晰地表示,您可以考虑从词法分析(标记化)和解析的Angular 来考虑。

相关问题