由于空白太多,正则表达式无法正常工作

时间:2018-03-15 14:37:24

标签: .net regex

目标:
无论使用多少白色或任何应该选择的字母,都要使用正则表达式。

问题:
当我在“test”>“和”testtest“之间的空间较小时,正则表达式代码可以工作,但如果我在”test“>”之间有更多空间“和“testtest”比正则表达式代码不起作用。

我错过了那部分代码?

谢谢!

dotnet的正则表达式

(?<=<p class="listing__address">)(.+?)(?=</span><span class="listing__map-link">)

工具我在互联网上用于正则表达式。
http://regexstorm.net/tester

更少的空间:

<p class="listing__address">                                 <a onclick="LogAction('9875', 'Map')" href="https://asdf test">    testtest,     <span>5252 S&#248;reidgrend                              </span><span class="listing__map-link">lkjlkj</span></a></p>

更多空间:

<p class="listing__address">                                 <a onclick="LogAction('9875', 'Map')" href="https://asdf test">           
           testtest,     <span>5252 S&#248;reidgrend                              </span><span class="listing__map-link">lkjlkj</span></a></p>

1 个答案:

答案 0 :(得分:0)

您想告诉Regex引擎使用单行,因此忽略换行符:

var x =
    @"<p class=""listing__address"">                                 <a 
onclick=""LogAction('9875', 'Map')"" href=""https://asdf test"">           
testtest,     <span>5252 S&#248;reidgrend                              </span><span class=""listing__map-link"">lkjlkj</span></a></p>";

var regex = new Regex(
    "(?<=<p class=\"listing__address\">)(.+?)(?=</span><span class=\"listing__map-link\">)", 
RegexOptions.Singleline);

Assert.That(regex.IsMatch(x));

这解决了眼前的问题,但每个问题都解决了这个问题。评论,用正则表达式解析HTML是一个危险的游戏。