【问题标题】:Regex replace everything after specific character inside specific tag正则表达式替换特定标签内特定字符后的所有内容
【发布时间】:2016-01-14 10:35:14
【问题描述】:

我有一个带有值的 XML 元素列表。我想删除特定字符(在本例中为句点)之后的任何字符或数字,但仅限于 someTag 元素内。

<someTag>123.3</someTag>
<someTag>8623.34</someTag>

我可以使用:\.(?=[^&lt;]*&lt;/someTag&gt;) 来定位标记内的句点。但是,我无法弄清楚如何删除句点及其之后的所有内容,以便最终结果是:

<someTag>123</someTag>
<someTag>8623</someTag>

非常感谢任何帮助!

【问题讨论】:

    标签: regex coda


    【解决方案1】:

    您的模式只匹配句点。您必须在标签关闭之前捕获所有内容。试试这个:

    (\.[^\<]+)<\/someTag>
    

    [^\&lt;]+ 是一个否定字符集,这意味着它将匹配集合中没有的任何内容。 [^\&lt;]+ 匹配,直到遇到 &lt; 字符。

    Regex101

    【讨论】:

    • 不错!这将选择句点之后的所有内容,包括结束的 。出于好奇,有没有办法保持结束标签完好无损,所以它也不会被删除? (注意,你可以用结束的 替换所有内容,它的工作方式相同)。谢谢!
    • 您不必替换整个匹配项,提取第一个捕获组并将其替换为空字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    相关资源
    最近更新 更多