Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XML中的Regexp替换_Javascript_Regex_Xml_Birt - Fatal编程技术网

Javascript XML中的Regexp替换

Javascript XML中的Regexp替换,javascript,regex,xml,birt,Javascript,Regex,Xml,Birt,我不熟悉使用XML,也没有受过太多培训。我正在尝试在自定义报告中正确设置文本格式。我有一句话: .replace(/(([^>]+)>)/ig,“\n”) 我想完全理解它在做什么。我知道一个新行正在替换括号中的内容。具体来说,这是在寻找什么 ([^>]+)>) 编辑(来自评论): 下面是完整的表达式(为了可读性而重新格式化) ( dataSetRow[“问题员工意见”]+ dataSetRow[“问题_‌​经理意见“] ) .替换(/([^>]+)>)/ig,“\n”) .replace(

我不熟悉使用XML,也没有受过太多培训。我正在尝试在自定义报告中正确设置文本格式。我有一句话:

.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>
    将被两行换行符取代
  • 就在2015年3月20日之后,
    /li>li>
    将被两行新行所取代
  • 就在2015年1月5日之后,
    /li>
    将被换行符取代
  • 就在所有附加的之前,`

    将被3个换行符取代
  • 最后,
    /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;
    修改为
    &;
    ,并完成其他工作。我没有在这里进行所有这些转换,因为这些不是您问的核心问题的一部分,但如果您不理解这些部分,可以进行详细说明。

    hat
    replace
    函数将用新行字符替换所有XML标记,留下没有任何标记的纯文本

    注意事项:

    • replace
      函数旨在应用于XML;它不是XML 本身
    • 它使用正则表达式来匹配XML标记 表情
    • .使用真实的 改为XML解析器或XPath

    是正确的。替换(/([^>]+)>/ig,“\n”)?不会。替换(/([^>)>)/ig,“\n”)?感谢Dan提供如此快速和详细的响应。这段代码现在更有意义了。下面是完整的表达:
    code
    (dataSetRow[“问题\员工\评论”]+dataSetRow[“问题\经理\评论”)