向复杂的正则表达式添加例外(使用前瞻和后向)

问题描述:

我想要一些正则表达式的帮助,因为我不太熟悉。 到目前为止,我已经创建了下面的正则表达式:向复杂的正则表达式添加例外(使用前瞻和后向)

/\b(?<![\#\-\/\>])literal(?![\<\'\"])\b/i 

由于https://regex101.com/状态:

\ b断言在单词边界(位置^ \ W | \ W $ | \ W \ W | \ W \ W)

负回顾后(?])

断言,下面的正则表达式不匹配

匹配存在于下面的列表中的单个字符[# - />]

#匹配字符#字面上(不区分大小写)

- 字面(不区分大小写)

- 字符匹配/字符/字面上(不区分大小写)

>匹配字符>字面上(不区分大小写)

字面匹配字面文字的字符匹配的LY(不区分大小写)

负先行(?![\ < \'\“])

断言下面的正则表达式不匹配

比赛出现在下面的列表中的单个字符[\ < \ '\“]

\ <字符<字面上(不区分大小写)匹配

\' 与c匹配haracter'字面上(不区分大小写)

\字面意思是 “匹配字符”(不区分大小写)

\ b断言位置在单词边界(^ \ W | \ W $ | \ W \ W | \ W \ W)

全局模式标志

我修饰符:不敏感。不区分大小写的匹配(忽略 [a-zA-Z]的情况)

我想为此匹配规则添加两个例外。 1)如果“>”前面有“p”,例如一个<p>开始标记,则仅匹配文字。 2)仅当</p相关时,也应该仅匹配文字,例如</p>结束标签。 怎样才能做到这一点?

示例:只有粗体字应匹配。

<p> 
    **Literal** in computer science is a 
    <a href='http://www.google.com/something/literal#literal'>literal</a> 
    for representing a fixed value in source code. Almost all programming 
    <a href='http://www.google.com/something/else-literal#literal'>languages</a> 
    have notations for atomic values such as integers, floating-point 
    numbers, and strings, and usually for booleans and characters; some 
    also have notations for elements of enumerated types and compound 
    values such as arrays, records, and objects. An anonymous function 
    is a **literal** for the function type which is **LITERAL** 
</p> 

我知道我有过复杂的事情,但情况本身很复杂,我想我没有别的办法。

+2

你能给的你想用它做什么输入和输出的例子吗?你使用哪种编程语言的正则表达式? – 4castle

+0

@ 4castle我已经添加了一个例子。你会介意像以前一样再次编辑它吗?不知道如何添加实际的HTML。 – dpesios

+2

这是什么编程语言?它看起来像你需要一个HTML解析器,而不是一个正则表达式。请阅读[XY问题](http://mywiki.wooledge.org/XyProblem)。 – 4castle

如果您正在搜索文本是文本与一些<a>标签混合,然后就可以简化<>部分lookarounds,并给出具体的字符串,它不应该依次为:</a>

/\b(?<![-#\/])literal(?!<\/a>)\b/i 

Regex101 Demo

+0

谢谢!好的方法,没有想到它。 – dpesios