我正在尝试写一条符合标签的内容,减去任何领先或尾随的空格的正则态度。这是输入的沸腾示例:

<tag> 文本 </tag>

我只想匹配以下内容(请注意,对比赛之前和之后的空格如何修剪):

“文本”

我目前正在尝试在.NET(PowerShell)中使用此正则条件:

(?<=<tag>(\s)*).*?(?=(\s)*</tag>)

但是,此正则匹配标签内部的“文本”以及不希望的标签内部的领先空格。如何将正则态度固定为预期的工作?

有帮助吗?

解决方案

放下外观;它们只是使工作比需要的更复杂。相反,使用捕获组挑选您想要的零件:

<tag>\s*(.*?)\s*</tag>

您想要的零件可作为 $matches[1].

其他提示

您不应使用Regext来解析HTML.

改用解析器。

还:删除身体标签属性(C#)

还: REGEX匹配打开标签除XHTML自包式标签外

如果所有这些都不说服您,那就不要在表达式中间使用点。使用字母数字逃生。您的点正在消耗空格。改用 w(我认为)。

使用这些正则表达式剥离尾随和领先的空间。 /^\s+//\s+$/

        test = "<tag>     test    </tag>";
        string pattern3 = @"<tag>(.*?)</tag>";
        Console.WriteLine("{0}", Regex.Match(test,pattern3).Groups[1].Value.Trim());
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top