Regex 字符串的正则表达式匹配

Regex 字符串的正则表达式匹配,regex,perl,Regex,Perl,我正在做一个perl脚本,它将对xml文件进行一些格式化。在打开任何xml标记之前忽略空白时,我需要一些帮助。我有以下xml文件 test.xml <xml> <TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI> </xml> 输出字符串应

我正在做一个perl脚本,它将对xml文件进行一些格式化。在打开任何xml标记之前忽略空白时,我需要一些帮助。我有以下xml文件

test.xml

   <xml>
      <TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>
   </xml>  

输出字符串应该如下所示

    <xml>
      <TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
   </xml>  

定义、豁免和退税“其中”E

确定是否
确定是否
确定是否
确定是否
我不是正则表达式专家,因此在某些情况下这可能会失败,但根据您最后的评论,请尝试下一步:

echo '<xml>
      <TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>

<TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>' | perl -0777 -pE 's/(\S)(\s+)(<\w+?>)/$1 $3/g;s/> +</>\n</g'
<xml>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>
echo'
“何处”的定义、豁免和退税
E
“何处”的定义、豁免和退税
E

| perl-0777-pE的s/(\s)(\s+)/$1$3/g;s/>+\n我不是正则表达式专家,因此在某些情况下这可能会失败,但根据您最后的评论,请尝试下一步:

echo '<xml>
      <TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>

<TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>' | perl -0777 -pE 's/(\S)(\s+)(<\w+?>)/$1 $3/g;s/> +</>\n</g'
<xml>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>
echo'
“何处”的定义、豁免和退税
E
“何处”的定义、豁免和退税
E

| perl-0777-pE的s/(\s)(\s+)/$1$3/g;s/>+\n我不是正则表达式专家,因此在某些情况下这可能会失败,但根据您最后的评论,请尝试下一步:

echo '<xml>
      <TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>

<TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>' | perl -0777 -pE 's/(\S)(\s+)(<\w+?>)/$1 $3/g;s/> +</>\n</g'
<xml>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>
echo'
“何处”的定义、豁免和退税
E
“何处”的定义、豁免和退税
E

| perl-0777-pE的s/(\s)(\s+)/$1$3/g;s/>+\n我不是正则表达式专家,因此在某些情况下这可能会失败,但根据您最后的评论,请尝试下一步:

echo '<xml>
      <TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>

<TI>Definitions, Exemptions and Rebates "where"  


    <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>' | perl -0777 -pE 's/(\S)(\s+)(<\w+?>)/$1 $3/g;s/> +</>\n</g'
<xml>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
<TI>Definitions, Exemptions and Rebates "where" <VARPARA><VAR>E</VAR></VARPARA></TI>
</xml>
echo'
“何处”的定义、豁免和退税
E
“何处”的定义、豁免和退税
E

| perl-0777-pE的s/(\s)(\s+)/$1$3/g;s/>+\n我就是这样处理的


$s=~s/\s+(?=\)//xig

我就是这样处理的


$s=~s/\s+(?=\)//xig

我就是这样处理的


$s=~s/\s+(?=\)//xig

我就是这样处理的


$s=~s/\s+(?=\)//xig

这有点像@Avinash Raj,至少打断了注释和CDATA。@atif,您必须使用解析器。解析就是给标记赋予意义。您可以尝试所有您想要的,但不检查<代码> @ IKGAMI的家伙,让我们退一步,如果我说它不是一个XML文件,它只是一个字符串“定义,豁免和退税在哪里e。这是一个字符串”。我想在出现任何| E |之前删除空白。我们怎么做?其中“E”可以是任意数量的字母,由| |包围,这是一个完全不同的问题。最初的问题是“在开始标记之前”,而不是“在字符串之前”。它要复杂得多,因为您无法通过搜索字符串来查找开始标记。如果您有新问题要问,请将其作为适当的问题发布。这有点像@Avinash Raj,至少会打断注释和CDATA。@atif,您必须使用解析器。解析就是给标记赋予意义。您可以尝试所有您想要的,但不检查<代码> @ IKGAMI的家伙,让我们退一步,如果我说它不是一个XML文件,它只是一个字符串“定义,豁免和退税在哪里e。这是一个字符串”。我想在出现任何| E |之前删除空白。我们怎么做?其中“E”可以是任意数量的字母,由| |包围,这是一个完全不同的问题。最初的问题是“在开始标记之前”,而不是“在字符串之前”。它要复杂得多,因为您无法通过搜索字符串来查找开始标记。如果您有新问题要问,请将其作为适当的问题发布。这有点像@Avinash Raj,至少会打断注释和CDATA。@atif,您必须使用解析器。解析就是给标记赋予意义。您可以尝试所有您想要的,但不检查<代码> @ IKGAMI的家伙,让我们退一步,如果我说它不是一个XML文件,它只是一个字符串“定义,豁免和退税在哪里e。这是一个字符串”。我想在出现任何| E |之前删除空白。我们怎么做?其中“E”可以是任意数量的字母,由| |包围,这是一个完全不同的问题。最初的问题是“在开始标记之前”,而不是“在字符串之前”。它要复杂得多,因为您无法通过搜索字符串来查找开始标记。如果您有新问题要问,请将其作为适当的问题发布。这有点像@Avinash Raj,至少会打断注释和CDATA。@atif,您必须使用解析器。解析就是给标记赋予意义。您可以尝试所有您想要的,但不检查<代码> @ IKGAMI的家伙,让我们退一步,如果我说它不是一个XML文件,它只是一个字符串“定义,豁免和退税在哪里e。这是一个字符串”。我想在出现任何| E |之前删除空白。我们怎么做?其中“E”可以是任意数量的字母,由| |包围,这是一个完全不同的问题。最初的问题是“在开始标记之前”,而不是“在字符串之前”。它要复杂得多,因为您无法通过搜索字符串来查找开始标记。如果你有一个新问题要问,把它作为一个适当的问题发布。