Javascript XML中的Regexp替换
我不熟悉使用XML,也没有受过太多培训。我正在尝试在自定义报告中正确设置文本格式。我有一句话:Javascript XML中的Regexp替换,javascript,regex,xml,birt,Javascript,Regex,Xml,Birt,我不熟悉使用XML,也没有受过太多培训。我正在尝试在自定义报告中正确设置文本格式。我有一句话: .replace(/(([^>]+)>)/ig,“\n”) 我想完全理解它在做什么。我知道一个新行正在替换括号中的内容。具体来说,这是在寻找什么 ([^>]+)>) 编辑(来自评论): 下面是完整的表达式(为了可读性而重新格式化) ( dataSetRow[“问题员工意见”]+ dataSetRow[“问题_经理意见“] ) .替换(/([^>]+)>)/ig,“\n”) .replace(
.replace(/(([^>]+)>)/ig,“\n”)
我想完全理解它在做什么。我知道一个新行正在替换括号中的内容。具体来说,这是在寻找什么
([^>]+)>)
编辑(来自评论):
下面是完整的表达式(为了可读性而重新格式化)
(
dataSetRow[“问题员工意见”]+
dataSetRow[“问题_经理意见“]
)
.替换(/([^>]+)>)/ig,“\n”)
.replace(/null/ig,“”)
.替换(/&;amp;/g,“&;”)
.替换(/&;39;/g“”)
.替换(/ ;/g,“”)
.替换(/•/g,“\n•”)
下面是这个表达式正在查看的XML(为了可读性而包装):
p> 我甚至不知道从哪里开始。。。丘比特在2015年2月14日不在他的办公桌上
我真的很难过,因为我对他的个人需求很有耐心。
圣诞老人及;amp;我让他坐下,讨论了为什么他的出席很重要
为了成功。/p>p>/p>p>他一直缺席
在:/p>ul>li>3/19/15/li>li>3月20日,
2015/li>li>05/01/2015/li>/ul>p>/p>p>All
将记录其他日期。/p>
此正则表达式(或regexp)可以分解如下
(<([^>]+)>)
括号用于分组
有时它们被用来记忆匹配,以便在以后的工作中使用,尽管我看不到在这个有限的代码示例中发生的任何证据
有时它们被用来允许多种选择(例如,(a | b | c)
,但我在这里也看不到这一点
因为括号在这个表达式中没有任何作用,至少在匹配方面没有作用,所以我们忽略它们。剩下的是:
<[^>]+>
其中一半是匹配的文字字符。匹配的开始必须是文字4字符字符串<代码> <代码>,字符串的结尾是文字字符>代码> <代码>。中间是唯一的ReXEP位。
[^>]+
方括号表示字符类。在字符类中,如果^
是第一个字符,就像这里一样,那么它是一个反向字符类,也就是说,它意味着“匹配不是这些东西的东西”。因此,这个字符类表示“匹配不是
的东西”
字符类后面的+
称为量词,它的意思是“这个东西的一个或多个”
综上所述,它的意思是“一个或多个不是
的东西”
整个表达式的意思是:匹配
,后跟一个或多个非
的内容,后跟一个
表达式后面有两个标志,i
和g
。i
表示不区分大小写进行匹配。它在这里不起任何作用,因为表达式中没有字母匹配字符。g
标志表示全局匹配,也就是说,如果对输入有多个匹配,则将它们全部匹配而不是仅在第一种情况下匹配
现在,看看您的示例XML,我相信表达式会进行一些编辑。请注意,您只发布了
的内容,但表达式实际上同时对该内容和
的内容进行操作,如果该内容有值的话。我不会在这里对
进行注释,因为您没有发布它包含的内容
I't
之前的前导p>
将被换行符取代之后,/p>p>/p>p>
将被4行换行符取代
之后,/p>ul>li>
将被3条换行符替换
3/19/15
之后,/li>li>
将被两行换行符取代/li>li>
将被两行新行所取代/li>
将被换行符取代/p>
将被换行符替换/ul>
遗漏
结果:
\我甚至不知道从哪里开始……丘比特在2015年2月14日不在他的办公桌上
我真的很难过,因为我对他的个人需求很有耐心。
圣诞老人和我让他坐下,讨论了为什么他的出席很重要
祝成功。\n\n\n\n他缺席了
在:\n\n\n3/19/15\n\nMarch 20,
2015\n\n05/01/2015\n/ul>\n\n\n所有
将记录其他日期。\n
这是
.replace()中的内容
您特别询问过。完整表达式也会做进一步的工作,例如将&;amp;
修改为&;
,并完成其他工作。我没有在这里进行所有这些转换,因为这些不是您问的核心问题的一部分,但如果您不理解这些部分,可以进行详细说明。hatreplace
函数将用新行字符替换所有XML标记,留下没有任何标记的纯文本
注意事项:
函数旨在应用于XML;它不是XML 本身replace
- 它使用正则表达式来匹配XML标记 表情
- .使用真实的 改为XML解析器或XPath
code
(dataSetRow[“问题\员工\评论”]+dataSetRow[“问题\经理\评论”)