Regex 正则表达式查找不在HTML标记内的短语
我对这个正则表达式有点纠结,想知道是否有人愿意帮助我 我需要做的是在一个字符串中分离出第一个短语,而这个字符串不在HTML标记中。所以我现在举的例子是:Regex 正则表达式查找不在HTML标记内的短语,regex,coldfusion,Regex,Coldfusion,我对这个正则表达式有点纠结,想知道是否有人愿意帮助我 我需要做的是在一个字符串中分离出第一个短语,而这个字符串不在HTML标记中。所以我现在举的例子是: This is some test text about <acronym title="Incomplete Test Syndrome" class="CustomClass">ITS</acronym> for the **ITS** department. Also worth mentioning ABS as
This is some test text about <acronym
title="Incomplete Test Syndrome"
class="CustomClass">ITS</acronym> for
the **ITS** department. Also worth
mentioning ABS as well I guess.ITS,
这是一些关于它的测试文本
**是它的**部门。也值得
我想也提到腹肌吧,
。。。而且
This is some **ITS** test text about
<acronym title="Incomplete Test
Syndrome"
class="GOTManager">ITS</acronym> for
the ITS department. Also worth
mentioning ABS as well I guess
这是一些**它的**测试文本
是为了
该委员会负责其部门。也值得
我想也提到腹肌
所以在第一个例子中,我希望它忽略包装好的ITS,并在第一句末尾给我ITS
在第二个例子中,我希望它在第二句的开头返回ITS
目的是在我正在编写的ColdFusion应用程序中用我自己定制的包装首字母缩略词标记替换这些标记
非常感谢,
James正如评论员所指出的,正则表达式不是处理XML/HTML类文本的好工具。这是因为“在”某些东西是很难在任何一般情况下检查的(你永远不知道你在这些可能的无限嵌套级别中处于哪一个) 但是,对于您的特定示例,这是可能的。这在很大程度上依赖于没有任何嵌套的标记。如果你这样做了,你应该认真地尝试另一种方法 你的例子很有用
^(?:<[^<]*<[^>]*>|.)*?(ITS)
正如评论员所指出的,正则表达式不是处理XML/HTML类文本的好工具。这是因为在任何一般情况下都很难检查“内部”内容(您永远不知道您处于哪种可能的无限嵌套级别) 但是,对于您的特定示例,这是可能的。这在很大程度上依赖于没有任何嵌套标记。如果有,您应该认真尝试另一种方法 你的例子很有用
^(?:<[^<]*<[^>]*>|.)*?(ITS)
^(?:我会告诉你当你问一个非常类似的问题时我告诉你的事情:
你不能用纯正则表达式解析HTML,包括嵌套元素。这是正则表达式的一个已知限制,并且有很好的文档记录
您可以尝试安装并使用带有扩展的外部正则表达式引擎,这可能会起作用。您可以手动遍历字符串,计算嵌套数,以查看正在查看的字符串是否已包装。您可以使用真正的HTML解析器,如WebKIT,在外部执行此操作
但是你不能用正则表达式。请寻找替代方法。见鬼,我们甚至会提供帮助。我会告诉你当你问一个非常类似的问题时我告诉你的同样的事情:
你不能用纯正则表达式解析HTML,包括嵌套元素。这是正则表达式的一个已知限制,并且有很好的文档记录
您可以尝试安装并使用带有扩展的外部正则表达式引擎,这可能会起作用。您可以手动遍历字符串,计算嵌套数,以查看正在查看的字符串是否已包装。您可以使用真正的HTML解析器,如WebKIT,在外部执行此操作
但是你不能用正则表达式。请寻找替代方法。见鬼,我们甚至会提供帮助。你说:
目的是用我的
在中拥有自定义包装的首字母缩略词标记
我正在写ColdFusion应用程序
听起来使用XSL比使用正则表达式更适合将一个标记转换为另一个标记
更新:
把这些放在一起,似乎对简单的情况有效:
(注意:这将简单地去掉“首字母缩略词”标记。您可以使用XSL将它们替换为您自己的自定义标记,但您没有按照这些行指定任何内容,因此我没有对此进行讨论)
XSL:
输入:
<?xml version="1.0" encoding="UTF-8"?>
<root>
This is some test text about <acronym
title="Incomplete Test Syndrome"
class="CustomClass">ITS</acronym> for
the **ITS** department. Also worth
mentioning ABS as well I guess.ITS,
This is some **ITS** test text about
<acronym title="Incomplete Test
Syndrome"
class="GOTManager">ITS</acronym> for
the ITS department. Also worth
mentioning ABS as well I guess
</root>
这是一些关于它的测试文本
这个**是它的**部门。同样值得
我想也提到腹肌吧,
这是关于**的**测试文本
是为了
它的部门。也值得
我想也提到腹肌
输出:
<?xml version="1.0" encoding="UTF-8"?>
This is some test text about for
the **ITS** department. Also worth
mentioning ABS as well I guess.ITS,
This is some **ITS** test text about
for
the ITS department. Also worth
mentioning ABS as well I guess
这是关于的一些测试文本
这个**是它的**部门。同样值得
我想也提到腹肌吧,
这是关于**的**测试文本
对于
它的部门。也值得
我想也提到腹肌
更新:
你说:
所以在第一个例子中,我希望它
忽略包装好的,给我
它在第一句的末尾
在第二个例子中,我希望它
在第2节开始时返回ITS
判决
这毫无意义。你的第二个示例在第二句中没有“ITS”。我想你的意思是,**ITS**
是你想要提取的内容
我给出的XSL示例仅剥离了
标记,但完成后,您可以尝试在句子中的不同点找到它的
,因此正则表达式可能很容易(这假设您只需要担心
标记)。您说:
目的是用我的
在中拥有自定义包装的首字母缩略词标记
我正在写ColdFusion应用程序
听起来使用XSL比使用正则表达式更适合将一个标记转换为另一个标记
更新:
把这些放在一起,似乎对简单的情况有效:
(注意:这将简单地去掉“首字母缩略词”标记。您可以使用XSL将它们替换为您自己的自定义标记,但您没有按照这些行指定任何内容,因此我没有对此进行讨论)
XSL:
输入:
<?xml version="1.0" encoding="UTF-8"?>
<root>
This is some test text about <acronym
title="Incomplete Test Syndrome"
class="CustomClass">ITS</acronym> for
the **ITS** department. Also worth
mentioning ABS as well I guess.ITS,
This is some **ITS** test text about
<acronym title="Incomplete Test
Syndrome"
class="GOTManager">ITS</acronym> for
the ITS department. Also worth
mentioning ABS as well I guess
</root>
这是一些关于它的测试文本
这个**是它的**部门。同样值得
我想也提到腹肌吧,
这是关于**的**测试文本
是为了
它的部门。也值得
我想也提到腹肌
输出:
<?xml version="1.0" encoding="UTF-8"?>
This is some test text about for
the **ITS** department. Also worth
mentioning ABS as well I guess.ITS,
This is some **ITS** test text about
for
the ITS department. Also worth
mentioning ABS as well I guess
这是关于的一些测试文本
这个**是它的**部门。同样值得
我想也提到腹肌吧,
这是关于**的**测试文本
对于
它的部门。也值得
提到ABS以及I gues