首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Notepad++中选择特定XML标记之间的字符串长度的正则表达式

在Notepad++中选择特定XML标记之间的字符串长度的正则表达式
EN

Stack Overflow用户
提问于 2020-02-02 05:31:26
回答 1查看 356关注 0票数 1

我正在处理NEMSIS XSD中的紧急服务数据。我有一个字段,它被限制为只有50个字符。我对这个网站进行了广泛的搜索,并尝试了许多解决方案-- Notepad++拒绝了所有的解决方案,说找不到。

下面是一个XML示例:

代码语言:javascript
运行
复制
<E09>
        <E09_01>-5</E09_01>
        <E09_02>-5</E09_02>
        <E09_03>-5</E09_03>
        <E09_04>-5</E09_04>
        <E09_05>this one is too long Non-Emergency - PT IS BEING DISCHARGED FROM H AFTER BEING ADMITTED FOR FAILURE TO THRIVE AND ALCOHOL WITHDRAWAL</E09_05>
</E09>
<E09>
        <E09_01>-5</E09_01>
        <E09_02>-5</E09_02>
        <E09_03>-5</E09_03>
        <E09_04>-5</E09_04>
        <E09_05>this one is is okay</E09_05>
</E09>

我尝试过以不同的方式命名E09_05标记的解决方案,使用<\/E09_05>作为结束标记,就像我在一些示例中看到的那样,并且就像我在其他示例中看到的那样使用</E09_05>。我尝试过在它们之间使用^.{50,}$,或者在它们之间使用[a-zA-Z]{50,}$,我也尝试过用()和不用表达式包装那些中间的表达式。我甚至尝试了在标签之间使用[\s\S]*?。当我单独使用不带XML标记的^.{50,}$时,Notepad++会发现唯一的问题……但后来我点击了所有的E13_01标签(它们都是EMS的叙述,而且总是大于50个字符) --造成了痛苦和令人手腕疼痛的点击。

我想要对此进行XSLT,但是有太多的针对每个E09_05字段的单独的、动手的there来自动化它。在这种环境中,Perl不是一个选择(而且我也不知道它是什么工具)。

要真正完美,字符串长度大于50的E09_05和E09_08字段都需要在搜索中选择...但没有其他任何类型或长度的元素。

提前谢谢。我确信我只是错过了一些微妙的\()[]。希望..。

EN

回答 1

Stack Overflow用户

发布于 2020-02-02 05:40:19

下面的正则表达式将查找超过50个字符的<E09_05>元素的文本内容。

(?<=<E09_05>).{51,}?(?=</E09_05>)

解释

代码语言:javascript
运行
复制
(?<=<E09_05>)     Start matching right after <E09_05>

.{51,}?           Match 51 or more characters (in a single line)
                  The ? makes it reluctant, so it'll stop at first </E09_05>

(?=</E09_05>)     Stop matching right before </E09_05>

对于真正完美的匹配,即字符串长度大于50的E09_05E09_08字段,请使用:

(?<=<(E09_0[58])>).{51,}?(?=</\1>)

解释

代码语言:javascript
运行
复制
<(E09_0[58])>     Match <E09_05> or <E09_08>, and capture the name as group 1

</\1>             Use \1 backreference to match name inside </name>

如果想要在文本末尾加上省略号来缩短文本,例如,最大长度为8的Hello World变为Hello...,请使用:

查找内容:(?<=<(E09_0[58])>)(.{47}).{4,}(?=</\1>)

替换为:\2...

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60021258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档