正则匹配标签内容,同时省略领先和尾随的空间
-
26-09-2019 - |
题
我正在尝试写一条符合标签的内容,减去任何领先或尾随的空格的正则态度。这是输入的沸腾示例:
<tag
>
文本
</tag
>
我只想匹配以下内容(请注意,对比赛之前和之后的空格如何修剪):
“文本”
我目前正在尝试在.NET(PowerShell)中使用此正则条件:
(?<=<tag>(\s)*).*?(?=(\s)*</tag>)
但是,此正则匹配标签内部的“文本”以及不希望的标签内部的领先空格。如何将正则态度固定为预期的工作?
解决方案
放下外观;它们只是使工作比需要的更复杂。相反,使用捕获组挑选您想要的零件:
<tag>\s*(.*?)\s*</tag>
您想要的零件可作为 $matches[1]
.
其他提示
改用解析器。
如果所有这些都不说服您,那就不要在表达式中间使用点。使用字母数字逃生。您的点正在消耗空格。改用 w(我认为)。
使用这些正则表达式剥离尾随和领先的空间。 /^\s+/
和 /\s+$/
test = "<tag> test </tag>";
string pattern3 = @"<tag>(.*?)</tag>";
Console.WriteLine("{0}", Regex.Match(test,pattern3).Groups[1].Value.Trim());
不隶属于 StackOverflow