带有回车符的文本的正则表达式模式以xml形式返回

时间:2015-10-16 13:17:05

标签: regex xml carriage-return

在xml文件中,我想更改内容,以便列名成为标签而不是属性。

<column name="bla">some text</column>

应该成为:

<bla>some text</bla>

我使用以下正则表达式进行了部分工作:

regex:        <column name="(.*)">(.*)<\/column>
substitution: <$1>$2</$1>

但是当文本包含回车符时,这不是足够的。添加[\ r \ n] *也只能帮助你。关于这个的任何想法?

它应该做的就是:

<column name="bla">some text</column>
<column name="bla">some text
</column>
<column name="bla">some text
        </column>
<column name="bla">some text
some text</column>
<column name="bla">some text
some text
some text</column>

成为:

<bla>some text</bla>
<bla>some text
</bla>
<bla>some text
        </bla>
<bla>some text
some text</bla>
<bla>some text
some text
some text</bla>

1 个答案:

答案 0 :(得分:1)

我建议您使用xml解析器来完成这项工作或创建一个XSLT样式表,以便将来节省时间和问题(写下您用来完成这项工作的语言,这样我们就可以推荐你的东西)。

无论如何你的正则表达式都不起作用,因为点.需要DOTALL修饰符(?s)来匹配(换行符/回车符也是如此)。

<column\s+name="([^"]+)"\s*>(.*?)<\/column>

还需要?之后的延迟修饰符.*:如果缺少正则表达式(.*?),则匹配从第一个开始标记<column>到最后一个结束标记{{1}的所有内容}}

在线试用正则表达式here

更新 - PHP

</column>