.net正则表达式-最后一个`<item>`之前不包含句号的字符串-尝试2

这个问题来自.net regex - strings that don't contain full stop on last list item

问题现在在下面。请注意,示例已被修改并增加了更多内容-所有这些都需要满足。好的示例应该不返回匹配项,而不好的示例应该返回匹配项。

我正在尝试使用.net正则表达式来标识XML数据中的字符串,这些字符串在最后一个标记之前不包含句号。我对正则表达式没有太多经验。我不确定我需要更改什么以及为什么要获得想要的结果。

数据中每行的末尾都有换行符和回车符。

模式用于XML。 我们无法访问.Net代码-仅使用自定义构建的应用程序的用户。

XML数据错误的示例1-应该给出1个匹配项:

<randlist prefix="unorder">
    <item>abc</item>
    <item>abc</item>
    <item>abc</item>
</randlist>

错误的XML数据的示例2-应该给出1个匹配项:

<randlist prefix="unorder">
    <item>abc. abc</item>
    <item>abc. abc</item>
    <item>abc. abc</item>
</randlist>

良好XML数据的示例1-regexp不匹配-最后</item>之前的句号:

<randlist prefix="unorder">
    <item>abc</item>
    <item>abc</item>
    <item>abc.</item>
</randlist>

良好XML数据的示例2-regexp不应该匹配-最后一个</item>之前的句号:

<randlist prefix="unorder">
    <item>abc. abc</item>
    <item>abc. abc</item>
    <item>abc. abc.</item>
</randlist>

我针对无效XML数据(未经良好XML数据测试)的上述条件,尝试了无效的Reg exp模式(使用https://regex101.com/的误报或不匹配):

^<randlist \w*=[\S\s]*\.*[^.]*<\/item>[\n]*<\/randlist>$
^\s+<item>[^<]*?(?<=\.)<\/item>$
bjj43h 回答:.net正则表达式-最后一个`<item>`之前不包含句号的字符串-尝试2

了解如何使用.NET,您可以:

  1. 将XML文件加载到XML文档中。
  2. 使用GetElementsByTagName方法在item元素中获取所有randlist标签。
  3. 获取[2]返回的最后一个元素。
  4. 检查它是否包含句点字符。

上面的内容应该更具可读性,并且如果XML的结构发生变化,您将不必重写一半的脚本。

,

下面的regexp模式对我们有效-已在Notepad ++中测试

[^.]<\/item>\s{1,2}<\/randlist>
本文链接:https://www.f2er.com/2732819.html

大家都在问